Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Klucze obce, inserty
loogin
post 3.04.2010, 21:49:03
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 27.01.2010

Ostrzeżenie: (0%)
-----


Witam ponownie, mam kwestię, której nie ogarniam, dlatego proszę o pomoc.
Rzecz ma się tak:

Fragment formularza związany z nieszczęsnym kontrahentem. Manipulacje nazwami forumularza, a nawet tabelami nic nie dały.
  1. dostawca:<br>
  2. <select name="kontrahent" id="kontrahent">
  3. <?php
  4. $res = mysql_query ("SELECT nazwa FROM kontrahent ");
  5. while($row = mysql_fetch_array($res))
  6. {
  7. $kontrahent= $row["nazwa"];
  8. echo "<option>$kontrahent</option>";
  9. }
  10. echo "</select>";
  11. ?>

  1. $kontrahent2 = $_POST['kontrahent'];
  2.  
  3. $kontrahent_id = mysql_query ("SELECT idkontrahent FROM kontrahent WHERE nazwa='$kontrahent2'");
  4. echo mysql_result($kontrahent_id,0,0); //sprawdzam, czy pobiera dobre id, ale obawiam się, ze nie tak powinno to być, booo ;)
  5. //print_r($katid) // wywala błąd Resource id #7, z którym nie wiem co począć

i dalej coś, czego w ogóle nie mogę rozwiązać, a zapewnie łączy się z powyższym
  1. $kon_obcy= mysql_query("INSERT INTO produkt SET idkontrahent='$kontrahent_id'");

Błąd
Cannot add or update a child row: a foreign key constraint fails (`sklepik`.`produkt`, CONSTRAINT `kontrahent` FOREIGN KEY (`idkontrahent`) REFERENCES `kontrahent` (`idkontrahent`) ON DELETE CASCADE ON UPDATE CASCADE)

Tabela kontrahentów jest wypełniona, a taki sposób uzupełniania wykorzystuję w kilku miejscach – w jednych działa, w innych nie (zawsze ten sam rodzaj błędu) i nie wiem robię źle.

Następnie łączenie produktu z odpowiednią kategorią:
  1. $produkt = mysql_query("INSERT INTO produkt SET nazwa='$nazwa', ilosc='$ilosc', itd.'");
  2. $klucz_produkt=mysql_insert_id();
  3. $kat_pr = mysql_query("INSERT INTO produkt_has_kategoria SET produkt_idprodukt='$klucz_produkt'");
Sam produkt uzupełnia się prawidłowo, jednak tabela produkt_has_kategoria pozostaje pusta.

Podobne rozwiązanie w przypadku kontrahenta i adresu działa:
  1. $adres = mysql_query("INSERT INTO adres SET miejscowosc='$miejscowosc', kod_pocztowy='$kod_pocztowy' itd.");
  2. $klucz_adres=mysql_insert_id();
  3. $info = mysql_query("INSERT INTO kontrahent SET nazwa='$nazwa' itd.");
  4. $klucz_info=mysql_insert_id();
  5.  
  6. $konadres = mysql_query("INSERT INTO kontrahent_has_adres SET kontrahent_idkontrahent='$klucz_info', adres_idadres='$klucz_adres'");


Może trochę za dużo tych kodów, ale właśnie rzecz w tym, że tu działa, a tam nie. Jeśli można, proszę mi wskazać co doczytać, aby rozwiązać te problemy smile.gif
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:55