Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Mały wielki problem z formularzem, Checkbox wysyłanie wartości do tabeli
miszarus
post 20.01.2010, 20:00:15
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 20.11.2009

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


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)
Go to the top of the page
+Quote Post
neverever
post 20.01.2010, 20:17:59
Post #2





Grupa: Zarejestrowani
Postów: 278
Pomógł: 44
Dołączył: 17.02.2004
Skąd: Wieliczka

Ostrzeżenie: (10%)
X----


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

Ten post edytował neverever 20.01.2010, 20:21:01


--------------------
neverever
Go to the top of the page
+Quote Post
miszarus
post 20.01.2010, 20:30:06
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 20.11.2009

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


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`))
Go to the top of the page
+Quote Post
InosU31
post 20.01.2010, 21:02:10
Post #4





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

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


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
Go to the top of the page
+Quote Post

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: 27.06.2025 - 01:24