Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL] [PHP] System rezerwacji, Problem z wyborem zapisu informacji w DB
scorpimen
post 10.09.2008, 17:31:21
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 13.10.2007

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


Ostanio spotkałem się z dość interesującym problemem. Mianowicie mam hotel, ma on 10 pokoji. Mój problem polega na tym że nie wiem jak rozwiązać rezerwacje na dany pokój. 
W tej chwili mam 2 pomysły na rozwiązanie rezerwacji. Pierwszy wydaje się dość dobry. Mianowicie tworzę sobie tabelę w DB o nazwie rezerwacje która powinna wygladać mniej wiecej tak:

ID | ID_pokoju | ID_klienta | rezerwacja_od | rezerwacja_do

Problem polega na tym ze niewiem w jakim formacie zapisywać daty rezerwacji. Czy wybrać format unixowy generowany za pomocą mktime() czy format z mysql. Chodzi oto żeby latwo i szybko się to potem przeszukiwało. 

Drugi pomysł wydaje się mi dość "cieżki" mianowicie tabela wygladala by tak:

dzien_w_roku|pokoj_1 | pokoj_2 | pokoj_3 ............. pokoj_10
1
2
3
...
365


Chodzi generanie oto zeby potem wybierać pierwszy wolny pokój i dokonywać w nim rezerwacji. Jak brzmiało by ewentualnie zapytanie SQL które by sprawdzało czy dany pokój jest wolny w danich od x do y.

Gdyby rezerwacje były dokonywane tylko na 1 dzień to nie miałbym problemu. Bym wybrał pierwszy wolny pokoj z zapytania.
Ale jak sprawdzać czy pokój bedzie wolny w przedziale dni?

Powiedzcie jak byście to rozwiazali.

Pozdrawiam
Go to the top of the page
+Quote Post
nevt
post 10.09.2008, 17:43:39
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


polecam zdecydowanie pierwsze rozwiązanie. i pola OD i DO typu DATE - ciebie interesuje tylko rok miesiąc i dzień, niepotrzebne są godziny minuty i sekundy zaszyte w unixowym znaczniku czasu.


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
scorpimen
post 12.09.2008, 16:04:25
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 13.10.2007

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


Ok dzieki za odpowiedz. Wykombinowalem sobie zapytanie które pokzauje mi wszystkie zarezerwowane pokoje na podany zakres dat. 


  1. SELECT * 
  2. FROM pokoje WHERE `ID` != (SELECT ID_pokoju FROM `rezerwacje`  WHERE ('2008-09-15' BETWEEN `od` AND `do` ) AND ('2008-09-18' BETWEEN `od` AND `do`) )

Jedank gdy wykonam to zapytanie a pokoj bedzie zajety od np. 13 do 17 to pokaze mi ze ten pokoj jest nadal wolny.
Jak spawdzić czy pokój nie jest zajęty i ominać wyżej opisany bład ?

Ten post edytował scorpimen 12.09.2008, 16:05:24
Go to the top of the page
+Quote Post
nevt
post 12.09.2008, 16:46:20
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


  1. SELECT * FROM `pokoje` LEFT JOIN `rezerwacje` ON `ID` = `ID_pokoju` WHERE (`od` BETWEEN '2008-09-15' AND '2008-09-18') OR (`do` BETWEEN '2008-09-15' AND '2008-09-18');

powodzenia.


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
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: 15.08.2025 - 04:07