Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] relacje
Forum PHP.pl > Forum > Przedszkole
lnn
mam problem bo chcialem stworzyc relacje, gdzie tabela `spis` przechowywala by identyfikator glowny wpisu
a do tego dolaczany bylby id usera

lecz gdy dodaje pierwszy raz to wszystko gra, pozniej mysql_error() wywala takie cos:
"Duplicate entry '18' for key 'user_id'"

jak stworzyc "dobre relacje" ? :/

kod:
  1. $etap_1 = unserialize($_SESSION['etap_1']);
  2. $etap_2 = unserialize($_SESSION['etap_2']);
  3. $etap_3 = unserialize($_SESSION['etap_3']);
  4. $etap_4 = unserialize($_SESSION['etap_4']);
  5.  
  6. // dodanie danych pobranych od uzytkownika do bazy danych
  7. if (mysql_query("INSERT INTO `spis` SET nazwa = '".$etap_1['nazwa']."',
  8. user_id = '".$_SESSION['id']."' ")==true)
  9. { echo "dodano spis<br />";}
  10. else { echo "nie dodano do spisu <br />";
  11. echo mysql_error(). '<br />';
  12. ;}
  13. $last_insert = mysql_insert_id();
  14. echo $last_insert;
  15.  
  16. if (mysql_query("INSERT INTO `dane1` SET
  17. nazwa = '".$etap_1['nazwa']."',
  18. adres1 = '".$etap_1['adres1']."',
  19. adres1_nr = '".$etap_1['adres1_nr']."',
  20. adres2 = '".$etap_1['adres2']."',
  21. adres2_kod = '".$etap_1['adres2_kod']."',
  22. wojewodztwo = '".$etap_1['wojewodztwo']."',
  23. tel1 = '".$etap_1['tel1']."',
  24. tel2 = '".$etap_1['tel2']."',
  25. fax = '".$etap_1['fax']."',
  26. www = '".$etap_1['www']."',
  27. typ_obiektu = '".$etap_1['typ_obiektu']."',
  28. opis = '".$etap_1['opis']."',
  29. user_id = '".$_SESSION['id']."',
  30. spis_id = '".$last_insert."' ") == true) {
  31. echo "dodano 1 etap do bazy";
  32. } else {
  33. echo "blad";
  34. }
  35. if (mysql_query("INSERT INTO `dane2` SET
  36. cena_od = '".$etap_2['cena_od']."',
  37. cena_do = '".$etap_2['cena_do']."',
  38. ilosc_pokoi = '".$etap_2['ilosc_pokoi']."',
  39. ilosc_miejsc = '".$etap_2['ilosc_miejsc']."',
  40. wyposazenie = '".$etap_2['wyposazenie']."',
  41. user_id = '".$_SESSION['id']."' ") == true) {
  42. echo "<br />dodano 2 etap";
  43. } else { echo "blad przy dod 2 etapu";}
  44.  

bastard13
"Duplicate entry '18' for key 'user_id'"
ten błąd oznacza, że istnieje już rekord z taką samą wartością klucza głównego.
Błąd jest napewno tutaj:
  1. if (mysql_query("INSERT INTO `spis` SET nazwa = '".$etap_1['nazwa']."',user_id = '".$_SESSION['id']."' ")==true)

Nie zmieniasz $_SESSION['id'] i starasz się dodać jeszcze raz ten sam spis.
lnn
ok wlasnie znalazlem, dzieki za podpowiedz z tym kluczem bo wlasnie o niego chodzilo smile.gif tak to jest jak sie robi baze przez kreatora a nie wlasnorecznie dziergajac winksmiley.jpg

bylo
  1. CREATE TABLE IF NOT EXISTS `spis` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(50) NOT NULL,
  4. `user_id` int(10) NOT NULL,
  5. PRIMARY KEY (`id`),
  6. UNIQUE KEY `user_id` (`user_id`),
  7. UNIQUE KEY `user_id_4` (`user_id`),
  8. UNIQUE KEY `user_id_5` (`user_id`),
  9. KEY `user_id_2` (`user_id`),
  10. KEY `user_id_3` (`user_id`),
  11. KEY `user_id_6` (`user_id`)
  12. )

a powinno
  1. CREATE TABLE IF NOT EXISTS `spis` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(50) NOT NULL,
  4. `user_id` int(10) NOT NULL,
  5. PRIMARY KEY (`id`),
  6. KEY `user_id` (`user_id`)
  7. )
lukaszgolder
Myślę, że problemem jest to że ustawiłes user_id jako unikatowy klucz w tabeli `spis`
bastard13
Cytat(lukaszgolder @ 19.01.2010, 00:06:57 ) *
Myślę, że problemem jest to że ustawiłes user_id jako unikatowy klucz w tabeli `spis`

dokładnie to.
lnn
Cytat(bastard13 @ 19.01.2010, 00:09:38 ) *
dokładnie to.

wiem wiem, bo zamiast wklepac recznie bawilem sie w phpmyadmin ;P ale wyexportowalem sobie SQL i zobaczylem dopiero w czym rzecz, tak to jest polegac na programie ktorego zna sie srednio funkcje ;-)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.