Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Sprawdzenie czy termin jest wolny
coTYkcesz
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 5.03.2015

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


Mam tabele:
REZERWACJE(id_rezerwacji, id_klienta, id_lozka, od, do, czy_zameldowal, cena, czy_zaplacil, uwagi)
LOZKA(id_lozka, numer_pokoju, cena)

Mam formularz w którym wybieram łóżko, i date OD i date DO...

Potrzebuję stworzyć zapytanie do bazy MYSQL sprawdzające czy dane łóżko jest wolne w danym przedziale czasu...

Próbowałem już różne zapytania i nic mi nie wychodzi...

CODE
SELECT * FROM `lozka` LEFT JOIN `rezerwacje` ON `id_lozka` = `id_lozka` WHERE (`$od` BETWEEN '$od' AND '$do') OR (`$do` BETWEEN '$od' AND '$do')


Jest ktoś w stanie mi pomóc?

Wykombinowałem coś takiego ale to jeszcze chyba nie to.. coś mi tu jeszcze nie pasuje :/

$zapytanie = "SELECT * FROM rezerwacje WHERE id_lozka='$id_lozka' and od BETWEEN '$od' AND '$do' OR id_lozka='$id_lozka' and do BETWEEN '$od' AND '$do';";
Go to the top of the page
+Quote Post
zidek
post
Post #2





Grupa: Nieautoryzowani
Postów: 50
Pomógł: 2
Dołączył: 28.05.2013

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


CODE
$zapytanie = "SELECT * FROM rezerwacje WHERE id_lozka = {$id_lozka} AND od >= {$ od} AND do <= {$do}";


Pisane w pociągu na tel, ale powinno działać smile.gif
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #3





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


A co w sytuacji, kiedy chcielibyśmy zarezerwować pokój na święta (24.12 - 26.12), a jest zarezerwowany najpierw 22.12 - 25.12, a potem 26.12 - 28.12? Też nie jest wolny. smile.gif
Go to the top of the page
+Quote Post
coTYkcesz
post
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 5.03.2015

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


No właśnie...

To jak stworzyć do zaytanie? Pomocy bo już nie wiem co mam robić :/

SELECT * FROM rezerwacje WHERE id_lozka='$id_lozka' and od BETWEEN '$od' AND '$do' OR id_lozka='$id_lozka' and do BETWEEN '$od' AND '$do';

Mam takie zapytanie ale jak zarezerwuje pokój do 10.03.2015 do 15.03.2015 i później chce zarezerować od 15.03.2015 do 19.03.2015 to wypisuje że jest zajęte :/
Go to the top of the page
+Quote Post
robertpiaty
post
Post #5





Grupa: Zarejestrowani
Postów: 113
Pomógł: 18
Dołączył: 7.10.2007
Skąd: Pruszków

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


Ja bym sobie wyznaczył które łóżka są zajęte (tak chyba będzie łatwiej co nie znaczy że bardziej optymalnie). Łóżka zajęta to takie które rezerwacje można opisać poniższym warunkiem (dzisiaj myślenie sprawia mi ból więc trzeba sprawdzić czy ten warunek poniżej jest ok):
($dataOd <= od && $dataDo > od) OR ($dataOd < do && $dataDo >= do)

W związku z tym zapytanie by wyglądało następująco:
  1. SELECT * FROM lozka AS l LEFT JOIN rezerwacje AS r ON (r.id_lozka = l.id_lozka AND (($dataOd <= r.od && $dataDo > r.od) OR ($dataOd < r.do && $dataDo >= r.do))) WHERE r.id_rezerwacji IS NULL


--------------------
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 Aktualny czas: 21.08.2025 - 06:55