Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Mały wielki problem z formularzem
Forum PHP.pl > Forum > Przedszkole
miszarus
Kolejna moja prośba o rzucenie okiem.....
Mam formularz, i plik który przesyła mi to wszystko do bazy.
Cały problem dotyczy, checboxa>>Uslugi>> który wysłyła mi tylko jedną wartość do tabeli,a przecież jak ktoś rezrwuje to może wybrać tyle dodatkowych usług ile mu pasuje sad.gif
Stąd moje zapytanie....jak przesłać to tak, aby potencjalny użytkownik zazanczyć kilka usług dodatkowych i aby zostały one dodane do bazy.
Będę wdzięczny za każdą podpowiedź.....
formularz:
  1. <form action="rezerwacjadobazy.php" method="post">
  2. Wybierz pokój:<br><br>
  3. <select name="id_pokoje">
  4. <option value="1">Apartament Smoka</option>
  5. <option value="2">Apartameny Szefa</option>
  6. <option value="3">Apartament Michala</option>
  7. <option value="4">Pokój jednoosobowy(101)</option>
  8. <option value="5">Pokój jednoosobowy(102)</option>
  9. <option value="6">Pokój jednoosobowy(103)</option>
  10. <option value="7">Pokój dwuosobowy(201)</option>
  11. <option value="8">Pokój dwuosobowy (202)</option>
  12. <option value="9">Pokój dwuosobowy(203)</option>
  13. <option value="10">Pokój trzyosobowy(301)</option>
  14. <option value="11">Pokój trzyosobowy(302)</option>
  15. <option value="12">Pokój trzyosobowy(303)</option>
  16. </select>
  17. <br>
  18. <br>
  19. </br>
  20. Proszę o podanie daty w formacie: RRRR-MM-DD (np. 2010-01-24)<br>
  21. Pobyt od: <input type="text" name="pobyt_od" maxlength="10" /><br>
  22. Pobyt do: <input type="text" name="pobyt_do" maxlength="10" /><br><br><br>
  23. Wybierz usługi dodatkowe:<br>
  24. <input type="checkbox" name="id_uslugi" value="1" /> niadanie<br>
  25. <input type="checkbox" name="id_uslugi" value="2" /> kolacja<br>
  26. <input type="checkbox" name="id_uslugi" value="3" /> szampan
  27. <br><br><br><br>
  28. <input type="checkbox" name="czyfaktura" value="1" /> Zaznacz opcję jeżeli ma być wystawiona faktura VAT:<br><br><br>
  29.  
  30. <input type="submit" value="ZAREZERWUJ" />
  31.  
  32. </form>



dobazy:
  1. <?php
  2.  
  3. require_once('conn.php');
  4.  
  5.  
  6. $id_pokoje=$_POST['id_pokoje'];
  7. $id_uslugi=$_POST['id_uslugi'];
  8. $pobyt_od=$_POST['pobyt_od'];
  9. $pobyt_do=$_POST['pobyt_do'];
  10. $czyfaktura=$_POST['czyfaktura'];
  11.  
  12.  
  13. $zapytanie1="SELECT `id_users`FROM `users`WHERE `login` = \"$_SESSION[login_usera]\" ";
  14. $sql = mysql_query($zapytanie1);
  15. $lista = mysql_fetch_array($sql);
  16. $id_users=$lista['id_users'];
  17.  
  18.  
  19. $zapytanie2="
  20. INSERT INTO `miszarus_hotel`.`faktura`
  21. (`id_faktura`, `czyfaktura`)
  22. VALUES (NULL, '".$czyfaktura."')
  23. ";
  24. $wynik2 = @mysql_query($zapytanie2)or die(mysql_error());;
  25.  
  26.  
  27.  
  28. $zapytanie3="
  29. SELECT max(id_faktura) FROM `faktura`
  30. ";
  31. $wynik3 = @mysql_query($zapytanie3)or die(mysql_error());;
  32. $sql3 = mysql_query($zapytanie3);
  33. $lista3 = mysql_fetch_array($sql3);
  34. $id_faktura=$lista3['max(id_faktura)'];
  35.  
  36.  
  37. $zapytanie="
  38. INSERT INTO `miszarus_hotel`.`rezerwacja`
  39. (`id_rezerwacji`, `id_pokoje`, `id_users`, `pobyt_od`, `pobyt_do`, `id_uslugi`, 'id_faktura')
  40. VALUES (NULL, '".$id_pokoje."', '".$id_users."', '".$pobyt_od."', '".$pobyt_do."', '".$id_uslugi."', '".$id_faktura."')
  41. ";
  42.  
  43. $wynik = @mysql_query($zapytanie)or die(mysql_error());;
  44. if ($wynik){ //jezeli nie wystąpiły żadne blędy
  45. $message .= 'Twoja rezerwacja zostala dodana do bazy, czekaj na kontakt w celu potwierdzenia rezerwacji';
  46. }else{
  47. $message .= 'Twoja rezerwacja nie powiodła się<br />';
  48. }
  49.  
  50.  
  51. if(isset($message)){
  52. echo $message;
  53. }
  54.  
  55. ?>


Tabela rezerwacja:
  1. id_rezerwacji int(5) AUTO_INCREMENT
  2. id_pokoje int(5)
  3. id_users int(5)
  4. pobyt_od varchar(20)
  5. pobyt_do varchar(20)
  6. id_uslugi int(5)
neverever
dajesz tak:
  1. <input type="checkbox" name="id_uslugi[]" value="1" /> niadanie<br>
  2. <input type="checkbox" name="id_uslugi[]" value="2" /> kolacja<br>
  3. <input type="checkbox" name="id_uslugi[]" value="3" /> szampan


albo tak
  1. <input type="checkbox" name="id_uslugi[0]" value="1" /> niadanie<br>
  2. <input type="checkbox" name="id_uslugi[1]" value="2" /> kolacja<br>
  3. <input type="checkbox" name="id_uslugi[2]" value="3" /> szampan


$id_uslugi będzie wtedy tablicą zawierającą tylko zaznaczone pola
miszarus
wywala mi taki błąd:

Cannot add or update a child row: a foreign key constraint fails (`miszarus_hotel/rezerwacja`, CONSTRAINT `rezerwacja_ibfk_8` FOREIGN KEY (`id_uslugi`) REFERENCES `dodatkowe_uslugi` (`id_uslugi`))
InosU31
jak nie masz duzo pol tego checkboxa to mozesz zawsze wykombinowac tak ze dla kazdego zaznaczenia jest osobny rekord w bazie danych, bo nawet jesli zechcesz pozniej pobrac te dane z bazy to zamiast jednej opcji pobierzesz caly rekord czyli "szampan, kolacja,...". a nie kazde z osobna. W takiej sytuacji w skrypcie musisz tez uzuc jakiejs funkcji (nie orientuje sie w tych checkboxach czy mozna to pobrac tak jak to napisales i zapisac tak w bazie bo skad php ma wiedziec ktore value przesylasz ) np.

if ($_POST['id_uslugi'] == 1)
{
instert into tabela .....
}

if ($_POST['id_uslugi'] == 2)
{
instert into tabela .....
}

moze tak sprobuj;-)

pozdrawiam
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.