Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> porównanie zakresów dat, jak porównać ramy dat
Maciek1705
post 1.09.2009, 19:02:23
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 3
Dołączył: 15.06.2009

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


Witam serdecznie chciałem się zapytać czy istnieje możliwość sprawdzenia dwóch zakresów dat. Aby to dokładnie wyjaśnić przybliżam przykład:
  1. tu następuje połączenie z bazą i odczyt dwóch zmiennych z bazy danych pierwsza zmienna data od , druga zmienna data do:
  2.  
  3. $DataOd
  4. $DataDo
  5.  
  6. <?
  7. <form>
  8. <table>
  9. <tr>
  10. <td>Data od</td>
  11. <td><input type='text' name='DataOd' /></td>
  12. </tr>
  13.  
  14. <tr>
  15. <td>Data do</td>
  16. <td><input type='text' name='DataDo' /></td>
  17. </tr>
  18.  
  19. <tr>
  20. <td colspan='2'><input type='submit' name='wyslij' value='Wyślij' /></td>
  21. </tr>
  22. </table>
  23. </form>
  24. ?>


Wyobraźmy sobie np port lotniczy , motel itp gdzie rezerwujemy miejsce na jakiś czas. W tym formularzu wpisuje dwie daty w takim formacie dd.mm.rrrr , są to daty a raczej ramy czasowe naszej rezerwacji od do. Po wpisaniu do inputów dat klikamy na przycisk wyślij i tu pojawia się mój probelm. Jak stworzyć funkcję czy coś innego co porówna mi daty wprowadzone i sprawdzi czy w bazie danych akurat ten okres , przedział czasowy jest wolny lub zajęty, jeśli wolny to uruchomi procedure dodawania itp to wiem jak zrobić , jak zajęty to wyświetli komunikat że termin zajęty to wiem też mniej wiecej. Ale samo porównanie tak okresów jak to zrobić czy nie nachodzą na siebie itp. Proszę pomóżcie napiszcie jak Wy byście to najprościej zrobili.
Go to the top of the page
+Quote Post
wookieb
post 1.09.2009, 19:11:02
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. SELECT * FROM rezerwacje WHERE (data_od < data_ktora_sprawdzamy_od AND data_do > data_ktora_sprawdzamy_od) OR (data_od < data_ktora_sprawdzamy_do AND data_do > data_ktora_sprawdzamy_do)

Zwróci ci rekordy, które są zajęte w tym terminie. Jeżeli nie ma żadnych to termin jest wolny.

Ten post edytował wookieb 1.09.2009, 19:11:30


--------------------
Go to the top of the page
+Quote Post
Maciek1705
post 1.09.2009, 19:47:57
Post #3





Grupa: Zarejestrowani
Postów: 157
Pomógł: 3
Dołączył: 15.06.2009

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


dzieki wielkie o coś takiego mi chodziło myślałem że to będzie coś skomplikowanego skoro np data jest taka 12.08.2009 lub 12-08-2009 ale skoro mówisz że zadziała to wielkie dzięki za pomoc :-)
Go to the top of the page
+Quote Post
wookieb
post 1.09.2009, 20:19:21
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Musisz zastosować odpowiednie typ pola w pazie. Masz szeroką gamę. datetime, timestamp, bigint ( http://php.net/mktime )


--------------------
Go to the top of the page
+Quote Post
Maciek1705
post 2.09.2009, 11:52:27
Post #5





Grupa: Zarejestrowani
Postów: 157
Pomógł: 3
Dołączył: 15.06.2009

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


Ja mam w swojej bazie zastosowane datetime. To raczej nie powinno być problemu
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: 4.05.2025 - 10:33