Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Połączenie formularza rezerwacji Bardzo Pilne
Forum PHP.pl > Forum > Przedszkole
miszarus
Witam oto moje dwa pliki. Nie wiem czemu, ale nie dodaje mi rekordów do bazy.....szok jakiś :/
Ma być to prosta rezerwacja, ale nie wiem dlaczego nie zapisuje tych danych w bazie.
Połączenie jest na pewno dobrze.......
Bardzo proszę o pomoc...

  1. <?php
  2.  
  3. require_once('conn.php');
  4.  
  5.  
  6. $id_pokoje=$_POST['id_pokoje'];
  7. $id_users=$konto;
  8. $id_uslugi=$_POST['id_uslugi'];
  9. $pobyt_od=$_POST['pobyt_od'];
  10. $pobyt_do=$_POST['pobyt_do'];
  11. $id_faktura=$_POST['id_faktura'];
  12. $zapytanie="
  13. INSERT INTO `miszarus_hotel`.`rezerwacja`
  14. (`id_rezerwacji`, `id_pokoje`, `id_users`, `pobyt_od`, `pobyt_do`, `id_uslugi`, `id_faktura`)
  15. VALUES (NULL, \'".$id_pokoje."\', \'".$id_users."\', \'".$pobyt_od."\', \'".$pobyt_do."\', \'".$id_uslugi."\', \'".$czyfaktura."\' )
  16. ";
  17.  
  18. $wynik = mysql_query($zapytanie);
  19.  
  20. /*
  21. $wynik = @mysql_query($zapytanie)or die(mysql_error());;
  22.   if ($result){ //jezeli nie wystąpiły żadne blędy
  23.   $message .= 'Twoje dane zostały dodane do bazy';
  24.   }else{
  25.   $message .= 'Wystąpił błąd. Przepraszamy za utrudnienia<br />';
  26.   }
  27. */
  28.  
  29.  
  30. if(isset($message)){
  31. echo $message;
  32. }
  33.  
  34. ?>


  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-17)<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="id_faktura" value="1" /> Zaznacz opcję jeżeli ma być wystawiona faktura VAT:<br><br><br>
  29.  
  30. <input type="submit" value="ZAREZERWUJ" />
  31.  
  32. </form>

lnn
daj po zapisie do bazy mysql_error() i sprawdz co ci zwraca
miszarus
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'1\', \'\', \'2022-02-11\', \'9211-21-21\', \'2\', \'\' )' at line 3
evolucja
może tak?

  1. $zapytanie="
  2. INSERT INTO `miszarus_hotel`.`rezerwacja`
  3. (`id_rezerwacji`, `id_pokoje`, `id_users`, `pobyt_od`, `pobyt_do`, `id_uslugi`, `id_faktura`)
  4. VALUES (NULL, '".$id_pokoje."', '".$id_users."', '".$pobyt_od."', '".$pobyt_do."', '".$id_uslugi."', '".$czyfaktura."' )
  5. ";
miszarus
Jak tak, to tak:

Parse error: syntax error, unexpected T_STRING in /home/miszarus/domains/megahotel.unl.pl/public_html/rezerwacjadobazy.php on line 14

Kur.... wlaczę z tym już 3dzień, i nie mogę wygrać.
Jestem już w pełnej desperacji sad.gif

Teraz wywala błąd taki:

Wystšpił błšd. Przepraszamy za utrudnienia (czyli ten co sam ustawiłem)

a kod jest taki

  1. <?php
  2.  
  3. require_once('conn.php');
  4.  
  5.  
  6. $id_pokoje=$_POST['id_pokoje'];
  7. $id_users=$konto;
  8. $id_uslugi=$_POST['id_uslugi'];
  9. $pobyt_od=$_POST['pobyt_od'];
  10. $pobyt_do=$_POST['pobyt_do'];
  11. $id_faktura=$_POST['id_faktura'];
  12. $zapytanie="
  13. INSERT INTO `miszarus_hotel`.`rezerwacja`
  14. (`id_rezerwacji`, `id_pokoje`, `id_users`, `pobyt_od`, `pobyt_do`, `id_uslugi`, `id_faktura`)
  15. VALUES (NULL, '".$id_pokoje."', '".$id_users."', '".$pobyt_od."', '".$pobyt_do."', '".$id_uslugi."', '".$id_faktura."' )
  16. ";
  17.  
  18. $wynik = @mysql_query($zapytanie)or die(mysql_error());;
  19. if ($result){ //jezeli nie wystąpiły żadne blędy
  20. $message .= 'Twoje dane zostały dodane do bazy';
  21. }else{
  22. $message .= 'Wystąpił błąd. Przepraszamy za utrudnienia<br />';
  23. }
  24.  
  25.  
  26. if(isset($message)){
  27. echo $message;
  28. }
  29.  
  30. ?>


HIHI,
dodaje rekordy ale wyświetla "wystąpil bląd".
jak się tego pozbyćquestionmark.gif
aha, i co zrobić aby pobierał dane o zalogowanym użytkowniku?
evolucja
Ta instrukcja zawsze będzie prawdziwa, bo nie ma w kodzie nigdzie zmiennej $result winksmiley.jpg Nie chodziło ci czasami o $wynik?

A dane pobierasz normalnie, np. po nicku usera.
  1. $zapytanie = mysql_query("SELECT * FROM 'users' WHERE `username` = \"$nick\"");
  2. $wynik = mysql_fetch_array($zapytanie);
  3.  
  4. echo $wynik["id"];
  5. echo $wynik["email"];


itd...
Kshyhoo
Żeby wrzucał zalogowanego usera, zaloguj go wpierw, wrzuć np. do sesji i potem $_SESSION['login'] do bazy.
miszarus
Wielkie, dzięki.

ale z tym if ($result) do dowaliłem.
Dzięki serdeczne smile.gif

to aby pobierał mi id_usera muszę zrobić sesje i żeby z nich pobierał id_usera?
dobrze rozumiem??
Kshyhoo
No gdzieś musisz "trzymać" zalogowanego, możesz w sesji... Np.:
  1. if ($_SESSION["zalogowany"]=="tak") {
  2. if ($_SESSION['login']) {
  3. ... i tu kodzik do bazy
evolucja
Przy logowaniu wrzucasz $id_usera do sesji lub ciastka, a potem na innych stronach z niego korzystasz. Chodź kod który podałem wyżej również mógłbyś wykorzystać, z tym, że generowało by to dodatkowe zapytania...

Np, gdy nick usera trzymasz w ciastkach, id pobierasz w ten sposób:
  1. $zapytanie = mysql_query("SELECT * FROM 'users' WHERE `username` = \"$_COOKIES['nick']\"");
  2. $wynik = mysql_fetch_array($zapytanie);
  3. $id = $wynik['user_id'];
miszarus
OK, myślę że sobie poradzę, ale mam kolejne pytanie...mianowicie.
Chodzi mi o datę pobytu od-do.
Chodzi mi o to, aby nie można było dokonać rezerwacji danego pokoju, jeżeli ktoś w tym czasie ma go zarezerwowanego?

Kshyhoo
To jest proste. Dodajesz do tabeli kolumnę, w której trzymasz stan pokoju, który sprawdzasz. Jeżeli jest 1 to zajęty, jeżeli =0, to można wynająć...
  1. SELECT * FROM pokoje WHERE stan=1
miszarus
Ale jeśli ktoś zarezerwuje pokój o 12 godzinie na datę 12.01.2009-20.01.2009 a ktoś dwie minuty później na datę 21.01.2009-23.01.2009 to jaka będzie wtedy wartość w tabeli?? jak będzie ustalana??
evolucja
To nie takie proste. Źle pomyślałeś po prostu, zapomniałeś o fakcie takim, iż pokój rezerwowany jest w różnych przedziałach czasowych.. Tzn. w tabeli może być kilka rezerwacji tego samego pokoju, ale o różnych datach.

W takim razie musisz pobrać wszystkie wpisy, a następnie porównywać datę wynajmu każdego z nich... to już trochę cięższe będzie.
celbarowicz
robiłem coś podobnego wraz z nazwą id_hotelu , id_numerem pokoju ,itd .. zapisywałem do bazy datę w systemie unix, to wystarczyło po odpowiednim zapytaniu stwierdzić czy pokój jest zajęty, wszystkie wpisy z poprzedniego miesiąca po zapisaniu do archiwum były kasowane.
zobacz stronę noce.pl, to nie jest moje dzieło ale podglądałem funkcjonalność, ciekawy jest kalendarz.
miszarus
A więc nie będzie tak łatwo jak myślałem, ale cóż...tego się spodziewałem smile.gif
Czyli muszę zrobić oddzielną tabelę, i połączyć ją z rezerwacją. W tabeli umieścić kilka rekordów.
Ale nie ma możliwości zapisania daty jakoś inaczej, żeby to było prościej??
Kshyhoo
Ale właśnie taka metoda jest najprostsza.
miszarus
Wszytko pięknie, ale jaką metodą porównywać przedział czasowy??
O to się rozchodzi....bo te same daty to pryszcz, ale jak rozwiązać przedział czasowy...
Bo sama data nic nie da....jeżeli ktoś zamówi dzień później na dzień dłużej pokój zostanie zarezerwowany, a w rzeczywistości nie będzie dostępny :/
Kurka wodna....z deszczu pod rynnę sad.gif
Kshyhoo
Pokoje wynajmuje się zazwyczaj na doby lub godziny, więc przedziały czasowe to nie problem. Zapisujesz w bazie zawsze koniec zdarzenia, czyli koniec rezerwacji. W warunkach sprawdzasz przedziały czasowe, w których są wolne pokoje.
miszarus
No dobra....
mam kolejne pytanie, w jaki sposób porównywać dane??
I co umieścić w tabeli?? czy wolny pokój,?
Czy jak? "nie bardzo to widzę" :/
Może ktoś mi rozjaśni umysł sad.gif
Kshyhoo
Przybliż problem.
miszarus
No więc tak.
W tej chwili dane przekazywane są do z formularza, do tabeli rezerwacja która, przedstawia się tak

  1. id_rezerwacji int(10)
  2. id_pokoje int(10)
  3. id_users int(10)
  4. pobyt_od varchar(20)
  5. pobyt_do varchar(20)
  6. id_uslugi int(10)
  7. id_faktura int(50)


i tu niby wprowadzam datę....
No wiem że tak nie może być (varchar(20)), ale właśnie, czy tworzyć nową tabelę, czy da się jakoś tu zrobić, aby nie można było zarezerwować >>zarezerwowanego już pokoju na dany czas.

//Aha, i jak zrobić aby można było wybrać nie jedną ale kilka opcji usług dodatkowych??
Bo narazie w zależności od wyboru, przekazuje mi value=1/2/3 i później z tabeli rezrwacja jest relacja do usulugi_dodatkowe.
A jak zrobić aby można było wybrać kilka opcji??
jak to rozwiązaćquestionmark.gif
Kshyhoo
Moim zdaniem, nie ma potrzeby. Dajesz w zapytaniu WHERE pobyt_do='' lub WHERE pobyt_do IS NULL...
miszarus
OK, a jak zrobić aby można było wybrać nie jedną ale kilka opcji usług dodatkowych??
Bo narazie w zależności od wyboru, przekazuje mi value=1/2/3 i później z tabeli rezrwacja jest relacja do usulugi_dodatkowe.
A jak zrobić aby można było wybrać kilka opcji??
jak to rozwiązaćquestionmark.gif
Kshyhoo
To zależy, co to za opcji i jak je będziesz uaktywniał. radio, checkbox, lista rozwijana?
miszarus
Nie ma znaczenia ale najlepiej chekbox
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.