Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wybór daty, przeszukiwanie bazy na podstawie daty
Forum PHP.pl > Forum > PHP
kozikowski11
Witam, borykam sie z nowym problemem. Probuje stworzyc system wyszukiwania dat, ale moze bardziej na przykladach:
-- Baza danych
* rekord zawiera dwa pola (date_from) i (date_to), sa to pola typu DATE

-- PHP
* system opieram o Yii framework

Co chce osiagnac?
Uzytkownik podaje date przyjazdu i wyjazdu. System wyszukuje w bazie rekordow spelniajacych te kryterium. Problem jest taki, ze chce traktowac date_from i date_to jako przedzial czasowy.

Przyklad:
rekord1: id=1, date_from=17-03-2014, date_to=29-03-2014.

Jezeli uzytkownik poda w formularzu date przyjazdu np/ 19-03-2014 i date wyjazdu 28-03-2014. To chcialbym, aby ten rekord zostal znaleziony.

Teraz drugi przypadek:
Przedzial czasowy moze byc jednym dniem. ex/
rekord1: id=1, date_from=17-03-2014, date_to=29-03-2014.
rekord2: id=2, date_from=19-03-2014, date_to=19-03-2014.
rekord3: id=3, date_from=19-03-2014, date_to=22-03-2014.
date_from=10-10-2014, date_to:10-10-2014.

Jezeli teraz uzytkownik poda w formularzu date przyjazdu np/ 19-03-2014 i date wyjazdu 28-03-2014. To chcialbym, aby te wszystkie rekordy zostaly znalezione.

Pozdrawiam
kozikowski11
john_doe
  1. DATE(fieldname) BETWEEN 'from' AND 'to'

ale to nie dokładnie o co Ci chodzi

zobacz to stack

lub tu
stack
kozikowski11
Stosujac sie do rady john_doe probowalem to jakos ogarnac. Ale nie idzie.
Kod
SELECT * FROM `unregular_prices` `t` WHERE rooms_id=:rooms_id AND objects_id=:objects_id AND people_id=:people_id AND date_up>=:date_up AND date_down<=:date_down LIMIT 1. Bound with :objects_id='1', :people_id='4', :rooms_id='3', :date_up='"2014-03-08"', :date_down='"2014-03-28"'


gdzie w bazie mamy

Kod
INSERT INTO `unregular_prices` (`id`, `price`, `objects_id`, `rooms_id`, `people_id`, `date_up`, `date_down`) VALUES
(1, 100, 1, 3, 4, '2014-03-01', '2014-03-31');


Ciekaw jestem dlaczego mi nie znaduje tego rekordu..
john_doe
date_up w bazie masz 2014-03-01

a w zapytaniu 2014-03-08
kozikowski11
No tak ,zgadza sie. Zalozenie jest takie, zeby wyszukal mi wszystkie przedzialy czasowe zawierajace sie w przedziale zdefiniowanym przez uzytkownika.
john_doe
no to powinno działać

szukamy czy przedział zadany przez usera zawiera się w przedziele w bazie

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.