Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: porównanie zakresów dat
Forum PHP.pl > Forum > PHP
Maciek1705
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.
wookieb
  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.
Maciek1705
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 :-)
wookieb
Musisz zastosować odpowiednie typ pola w pazie. Masz szeroką gamę. datetime, timestamp, bigint ( http://php.net/mktime )
Maciek1705
Ja mam w swojej bazie zastosowane datetime. To raczej nie powinno być problemu
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.