Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wybór daty, przeszukiwanie bazy na podstawie daty
kozikowski11
post 17.03.2014, 08:53:23
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 16.09.2006

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


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
Go to the top of the page
+Quote Post
john_doe
post 17.03.2014, 09:19:05
Post #2





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


  1. DATE(fieldname) BETWEEN 'from' AND 'to'

ale to nie dokładnie o co Ci chodzi

zobacz to stack

lub tu
stack
Go to the top of the page
+Quote Post
kozikowski11
post 17.03.2014, 10:42:05
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 16.09.2006

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


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..

Ten post edytował kozikowski11 17.03.2014, 10:42:29
Go to the top of the page
+Quote Post
john_doe
post 17.03.2014, 11:10:31
Post #4





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


date_up w bazie masz 2014-03-01

a w zapytaniu 2014-03-08
Go to the top of the page
+Quote Post
kozikowski11
post 17.03.2014, 11:19:59
Post #5





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 16.09.2006

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


No tak ,zgadza sie. Zalozenie jest takie, zeby wyszukal mi wszystkie przedzialy czasowe zawierajace sie w przedziale zdefiniowanym przez uzytkownika.
Go to the top of the page
+Quote Post
john_doe
post 17.03.2014, 11:27:27
Post #6





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


no to powinno działać

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

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.07.2025 - 10:04