Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Czy godzina nie jest pomiędzy innymi godzinami
Forum PHP.pl > Forum > Przedszkole
desavil
Witam, mam przykładowo taką tabelę w bazie zawierającą godziny (rekordów może być nawet kilkadziesiąt):
Kod
godzina rozpoczęcia | godzina zakończenia
10:00 | 11:30
2:00 | 3:00
18:45 | 20:50
23:01 | 23:59
itd.


Użytkownik określa godzinę rozpoczęcia oraz godzinę zakończenia pewnego zdarzenia, takie zdarzenie może występować dowolną ilość razy w ciągu dnia, ale co najważniejsze: godziny nie mogą na siebie nachodzić oraz pokrywać się.

Problem w tym, w jaki sposób mogę sprawdzać, czy dodane przez użytkownika godziny rozpoczęcia i zakończenia nie nachodzą na siebie w stosunku do innych godzin będących już dodanych do danego zdarzenia? Jak mogę to zrobić najlepiej? Może być to rozwiązanie oparte o zapytanie do bazy (tak będzie chyba najlepiej o ile w tym da się to zrobić) lub już na poziomie samego PHP.

Z góry dziękuję za pomoc!
Pozdrawiam.
com
słowo kluczowe mysql between smile.gif
desavil
Chciałbym osiągnąć coś takiego:


Każdy prostokąt to rekord w bazie - całość dotyczy jednego zdarzenia.
Niebieskie prostokąty to rekordy już będące w bazie.
Pomarańczowy prostokąt to rekord, który ma zostać sprawdzony, czy może zostać dodany do bazy. Jak tutaj widać, powinno zwrócić że nie jest to możliwe, gdyż godziny pokrywają się, nachodzą na siebie.

W jaki sposób mogę takie coś uzyskać?

@Edit
Chyba mam:
  1. SELECT * FROM `times` WHERE '11:00:00' >= `time_start` AND `time_end` >= '8:00:00';

To zwraca mi rekordy, które już pokrywają się ze wskazanymi w zapytaniu zakresami godzin, a tym samym mogę użytkownikowi wyświetlić, że w tym zakresie nie można dodać godziny.


@Edit#2
Ma ktoś jeszcze może jakiś pomysł, w jaki sposób mógłbym to połączyć jeszcze z dniami tygodnia (pn-nd)?
Przy czym zachowując nadal, że żadne zdarzenie nie może się pokryć w tych samych godzinach.
patry6123
Ja bym to zrobił na unixowym zapisie czasu czyli ile minęło od 01.01.1900 (chyba) i sprawdzał, czy podana godzina mieści się już gdzieś 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.