![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 54 Pomógł: 1 Dołączył: 29.03.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Przestudiowałem sobie już istniejące tematy na ten temat i albo coś mi nie działało albo dotyczyło odwrotnej sytuacji czyli zwracało wolne pokoje w danym terminie. Do rzeczy: Tabela reservations: obj_id (id obiejktu/pokoju do rezerwacji), date_from (data od), date_to (data do) status (załóżmy, że zawsze 1),
Zapytanie zostało wygenerowane przez kod PHP (eloquent):
Niestety powyższy kod nie działa prawidłowo i w niektórych przypadkach zwraca wolny termin pomimo, że nie jest wolny. Bardzo proszę o pomoc w poprawieniu zapytania oraz odpowiedzenie na poniższe pytania: 1. Czy zmienne $date_to i $date_from mogą być zwykłymi stringami (2012-07-03)? 2. Czy właściwie ustawiłem typ kolumn date_from i date_to jako Date? PS. Jeżeli jest już na forum rozwiązanie to proszę o linka, mnie osobiście nie udało się znaleźć. Ten post edytował ze4lot 9.07.2013, 13:05:05 -------------------- ze4lot.pl
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 559 Pomógł: 93 Dołączył: 4.03.2008 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Kod SELECT * FROM `reservations` WHERE ((`date_from` <= $date_from AND `date_to` >= $date_from) OR (`date_from` <= $date_to AND `date_to` >= $date_to)) AND `status` = 1 AND `obj_id` = $obj_id data od jest mniejsza niż data od z formularza oraz data do jest większa niż data do z formularza lub data od jest mniejsza od daty do z formularza i data do jest większa niż data do z formularza Ja tu widzę błąd logiczny (albo za długo nie mam co robić) -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 54 Pomógł: 1 Dołączył: 29.03.2007 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za odpowiedź, niestety zapytanie również nie jest poprawne, ponieważ np. przy zarezerwowanym już terminie od 2013.07.03 do 2013.07.06 termin od 2013.07.01 do 2013.07.07 jest uznany za wolny, co jest błędem.
Nie wyjaśniłem tego wcześniej ale np. mając już rezerwacje 2013.07.03 do 2013.07.06, terminy od 2013.07.06 są wolne, bo 07.06 nikt już nie nocuje. -------------------- ze4lot.pl
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 559 Pomógł: 93 Dołączył: 4.03.2008 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Masz złe warunki, to źle wybiera
$date_from <= date_to and $date_from >= date_from and $date_to >= date_from and $date_to <= date_to -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 03:17 |