Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Sprawdzenie czy termin jest wolny
Forum PHP.pl > Forum > Przedszkole
coTYkcesz
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';";
zidek
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
SmokAnalog
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
coTYkcesz
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 :/
robertpiaty
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
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.