Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Mały wielki problem z formularzem, Checkbox wysyłanie wartości do tabeli
miszarus
post
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 (IMG:style_emoticons/default/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
 
Start new topic
Odpowiedzi (1 - 3)
neverever
post
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
Go to the top of the page
+Quote Post
miszarus
post
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
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 09:00