Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przypisanie zamówienia do klienta z osobnej tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
jazen
Witam

Mam tabelę CUSTOMERS w ktorej rejestrowani sa klienci (imie, nazwisko, adres, telefon). Po rejestracji klienta chciałbym do kolejnej tabeli ORDERS dodawac zamowienie. Oczywiscie zamowienie dostaje swoje ID, za pomocą formularzy klient wybiera co chce i dodaje to do tabeli ORDERS. Chciałbym zeby w tabeli ORDERS byly takze kolumny klient, i jego ID z tabeli CUSTOMERS - tak zeby obie tabele byly 'zsynchronizowane' ze sobą.

Dodaje klienta za pomocą formularza - ID 1, Jan Nowak, 666-666-666 do tabeli CUSTOMERS

Nastepne formularze dopytują o zamawiane produkty, które mają być dodawane do tabeli ORDERS. Jako ze tabela ma sporo kolumn rozbilem formularze na kilka plikow php z formularzami. Jednak kazdy jeden plik *.php dodaje formularze do kolejnego wiersza tabeli ORDERS. Jak moge ustawic, aby te inserty dodawały rekordy do jednego wiersza?

INDEX
  1. <?php>
  2. <form action="insert.php" method="post">
  3. <body>
  4. Witaj w panelu zamówień!<br>
  5. Pozwól, że zarejestrujemy Twoje dane jako klienta. Wypłenij proszę poniższe formularze<br><br>
  6. Imie: <input type="text" name="imie" /><br><br>
  7. Nazwisko: <input type="text" name="nazwisko" /> <br><br>
  8. Adres zamieszkania: <input type="text" name="adres_zamieszkania" /><br><br>
  9. Miejscowość: <input type="text" name="miejscowosc" /><br><br>
  10. Telefon: <input type="number" name="telefon" min="100000000" max="999999999"/><br><br>
  11. e-mail: <input type="email" name="email" /><br><br>
  12. <input type="submit" name="send" value="Wyślij" />
  13. </form>
  14. </?>


INSERT1
  1. <?php
  2. $con = mysql_connect("localhost","root","");
  3. if (!$con)
  4. {
  5. die('Nie mozna polaczyc: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("baza", $con);
  9.  
  10. $sql="INSERT INTO customers (imie, nazwisko, adres_zamieszkania, miejscowosc, telefon, email)
  11. VALUES
  12. ('$_POST[imie]','$_POST[nazwisko]', '$_POST[adres_zamieszkania]', '$_POST[miejscowosc]', '$_POST[telefon]', '$_POST[email]')" ;
  13. if (!mysql_query($sql,$con))
  14. {
  15. die('Blad: ' . mysql_error());
  16. }
  17.  
  18. $sql="INSERT INTO orders (imie, nazwisko, adres_zamieszkania, miejscowosc, telefon, email)
  19. VALUES
  20. ('$_POST[imie]','$_POST[nazwisko]', '$_POST[adres_zamieszkania]', '$_POST[miejscowosc]', '$_POST[telefon]', '$_POST[email]')" ;
  21. if (!mysql_query($sql,$con))
  22. {
  23. die('Blad: ' . mysql_error());
  24. }
  25. echo "Świetnie! Zarejestrowaliśmy Cię w naszej bazie klientów";
  26. ?>
  27. <br>
  28.  
  29. Przejdźmy do stworzenia zamówienia. <br><br>
  30. Poniżej uzupełnij dane dotyczące zaślubin. Podaj liczbę gości<br>
  31.  
  32. <form action="insert2.php" method="post">
  33. <body>
  34. Liczba gości: <input type="number" name="liczba_gosci" /><br><br>
  35. <input type="submit" name="send" value="Wyślij" />
  36. </form>
  37. </?>


INSERT2
  1. <?php
  2. $con = mysql_connect("localhost","root","");
  3. if (!$con)
  4. {
  5. die('Nie mozna polaczyc: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("baza", $con);
  9. $sql="INSERT INTO orders (liczba_gosci)
  10. VALUES
  11. ('$_POST[liczba_gosci]')";
  12.  
  13. if (!mysql_query($sql,$con))
  14. {
  15. die('Blad: ' . mysql_error());
  16. }
  17. echo "Świetnie! Teraz przejdźmy do ustaleń odnośnie miejsca ceremonii";
  18. ?>
  19. <form action="insert3.php" method="post">
  20. Podaj adres miejsca ceremonii: ul.<input type="text" name="adres_ceremonii" /><br><br>
  21. Wybierz kolorystyke dekoracji <br>(naciśnij na grafikę, aby obejrzeć!): <br>
  22. <tabel>
  23. <tr>
  24. <td><input type="radio" value="Lawenda" name="dekoracja_ceremonii">Lawenda<br><img src="dekoracja_kosciol\lawenda\1.png" width="238" height="102"></td><br><td><input type="radio" value="Zloto" name="dekoracja_ceremonii">Złoto<br><img src="dekoracja_kosciol\zloto\1.jpg" width="238" height="102"></td>
  25. </tr>
  26. <tr><br>
  27. <td><input type="radio" value="Srebro" name="dekoracja_ceremonii">Srebro<br><img src="dekoracja_kosciol\srebro\1.jpg" width="238" height="102"></td><br> <td><input type="radio" value="Niebieski" name="dekoracja_ceremonii">Niebieski<br><img src="dekoracja_kosciol\niebieski\1.jpg" width="238" height="102"></td>
  28. </tr>
  29. <tr><br>
  30. <td><input type="radio" value="Biel" name="dekoracja_ceremonii">Biel<br><img src="dekoracja_kosciol\biel\1.webp" width="238" height="102"></td><br> <td> <input type="radio" value="Ecrue" name="dekoracja_ceremonii">Ecrue<br><img src="dekoracja_kosciol\Ecrue\1.png" width="238" height="102"></td>
  31. </tr><br>
  32. <input type="radio" value="Bez_dekoracji" name="dekoracja_ceremonii">Bez dekoracji<br>
  33. <input type="submit" name="send" value="Dalej" />
  34. </form>


Kolejne inserty podobnie.
javafxdev
Inserta robisz na końcu nie po każdej zmianie strony.
jazen
Na końcu? Mam 6 plikow insert.php, poniewaz wszystko na jednej stronie byloby za duzo, wiec stwierdzilem ze po wyslaniu formularza pojawi sie nastepny itd. itd. Wiec dodalem INSERT z wszystkimi pozycjami do ostatniego pliku php (insert6.php). Jednak po uzupelnieniu formularzy wysypalo mi bledy...

  1.  
  2. Notice: Undefined index: imie in C:\xampp\htdocs\SQL4\insert6.php on line 11
  3.  
  4. Notice: Undefined index: nazwisko in C:\xampp\htdocs\SQL4\insert6.php on line 11
  5.  
  6. Notice: Undefined index: adres_zamieszkania in C:\xampp\htdocs\SQL4\insert6.php on line 11
  7.  
  8. Notice: Undefined index: miejscowosc in C:\xampp\htdocs\SQL4\insert6.php on line 11
  9.  
  10. Notice: Undefined index: telefon in C:\xampp\htdocs\SQL4\insert6.php on line 11
  11.  
  12. Notice: Undefined index: email in C:\xampp\htdocs\SQL4\insert6.php on line 11
  13.  
  14. Notice: Undefined index: liczba_gosci in C:\xampp\htdocs\SQL4\insert6.php on line 11
  15.  
  16. Notice: Undefined index: adres_ceremonii in C:\xampp\htdocs\SQL4\insert6.php on line 11
  17.  
  18. Notice: Undefined index: dekoracja_ceremonii in C:\xampp\htdocs\SQL4\insert6.php on line 11
  19.  
  20. Notice: Undefined index: oprawa_muzyczna in C:\xampp\htdocs\SQL4\insert6.php on line 11
  21.  
  22. Notice: Undefined index: dywan in C:\xampp\htdocs\SQL4\insert6.php on line 11
  23.  
  24. Notice: Undefined index: golebie in C:\xampp\htdocs\SQL4\insert6.php on line 11
  25.  
  26. Notice: Undefined index: transport in C:\xampp\htdocs\SQL4\insert6.php on line 11
  27.  
  28. Notice: Undefined index: pojazd_slubny in C:\xampp\htdocs\SQL4\insert6.php on line 11
  29.  
  30. Notice: Undefined index: poprawiny in C:\xampp\htdocs\SQL4\insert6.php on line 11
  31.  
  32. Notice: Undefined index: poprawiny_zupa in C:\xampp\htdocs\SQL4\insert6.php on line 11
  33.  
  34. Notice: Undefined index: poprawiny_obiad in C:\xampp\htdocs\SQL4\insert6.php on line 11
  35.  
  36. Notice: Undefined index: poprawiny_deser in C:\xampp\htdocs\SQL4\insert6.php on line 11
  37. Blad: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '', 'bitki_wieprzowe', 'surowka_pekinka', 'kielbaski', 'brokulowa', 'dorsz_zydows' at line 3


Tak jakby nie pamietal wybranych poprzednich formularzy?
mmmmmmm
1 INSERT a potem 5 UPDATE
javafxdev
dane pomiędzy formularzami trzymasz w sesji php i dopiero na końcu robisz insert ze wszystkimi polami, jak zrobisz inserta na poczatku a user się rozmyśli przy 4 formularzu to będziesz miał w bazie sieczke.
jazen
Mam
  1. <?php
  2. $con = mysql_connect("localhost","root","");
  3. if (!$con)
  4. {
  5. die('Nie mozna polaczyc: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("annwedd", $con);
  9.  
  10. $sql= "UPDATE orders SET liczba_gosci=('$_POST[liczba_gosci]') WHERE id_zamowienia=max(id_zamowienia)";
  11.  
  12. if (!mysql_query($sql,$con))
  13. {
  14. die('Blad: ' . mysql_error());
  15. }
  16. echo "Świetnie! Teraz przejdźmy do ustaleń odnośnie miejsca ceremonii";
  17. ?>
  18. <form action="insert3.php" method="post">
  19. Podaj adres miejsca ceremonii: ul.<input type="text" name="adres_ceremonii" /><br><br>
  20. Wybierz kolorystyke dekoracji <br>(naciśnij na grafikę, aby obejrzeć!): <br>
  21. <tabel>
  22. <tr>
  23. <td><input type="radio" value="Lawenda" name="dekoracja_ceremonii">Lawenda<br><img src="dekoracja_kosciol\lawenda\1.png" width="238" height="102"></td><br><td><input type="radio" value="Zloto" name="dekoracja_ceremonii">Złoto<br><img src="dekoracja_kosciol\zloto\1.jpg" width="238" height="102"></td>
  24. </tr>
  25. <tr><br>
  26. <td><input type="radio" value="Srebro" name="dekoracja_ceremonii">Srebro<br><img src="dekoracja_kosciol\srebro\1.jpg" width="238" height="102"></td><br> <td><input type="radio" value="Niebieski" name="dekoracja_ceremonii">Niebieski<br><img src="dekoracja_kosciol\niebieski\1.jpg" width="238" height="102"></td>
  27. </tr>
  28. <tr><br>
  29. <td><input type="radio" value="Biel" name="dekoracja_ceremonii">Biel<br><img src="dekoracja_kosciol\biel\1.webp" width="238" height="102"></td><br> <td> <input type="radio" value="Ecrue" name="dekoracja_ceremonii">Ecrue<br><img src="dekoracja_kosciol\Ecrue\1.png" width="238" height="102"></td>
  30. </tr><br>
  31. <input type="radio" value="Bez_dekoracji" name="dekoracja_ceremonii">Bez dekoracji<br>
  32. <input type="submit" name="send" value="Dalej" />
  33. </form>

Otrzymuje kominukat
"Blad: Invalid use of group function"

Czy mozecie mi jakos pomoc? Pozdrawiam
SmokAnalog
Nie możesz użyć max() w SQL w taki sposób.

Zamiast tego daj:

  1. $sql = "UPDATE orders SET liczba_gosci=('$_POST[liczba_gosci]') ORDER BY id_zamowienia DESC LIMIT 1";


P.S. Twój kod jest bardzo, bardzo złej jakości.
javafxdev
Nie rób update-ów tylko jednego INSERTA na końcu - jak będziesz robił update-y to kolumny będziesz musiał mieć dozwolone wartości NULL.
jazen
Dziekuje za pomoc. Tak, kod jest marnej jakości - dopiero się uczę smile.gif Chetnie poslucham wskazowek smile.gif
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-2019 Invision Power Services, Inc.