Witam

W tabeli mam takie wartośći:
hour - decimal (O której zaczyna się dana akcja)
time_treatments - decimal (Ile minut będzie trwała)

Wiadomo z formularza wprowadzam podobne wartości czyli początek i czas trwania

Mam takie coś:

  1. $sql = 'SELECT *, (hour+time_treatments) as time_z
  2. FROM events
  3. WHERE event_date = "'.$day.'"
  4. AND place = "'.intval($_POST['placeid']).'"';
  5. $result = mysql_query($sql);
  6. if ( !$result ) die('Błąd SQL #6: '.mysql_error());
  7. while( $row = mysql_fetch_array($result) )
  8. {
  9. // $hour = 8.00
  10. // $row['hour'] = 8.30
  11. // $row['time_z'] = 8.50
  12. // $suma2 = 9.30
  13. if ( ($hour >= (float) $row['hour']) && ($hour <= (float) $row['time_z']) && ($suma2 >= (float) $row['hour']) && ($suma2 <= (float) $row['time_z']) )
  14. {
  15. die('Przepraszamy, termin nie dostępny');
  16. }
  17. }

W komentarzach przykładowe wartości.
Wynika z tego że jeżeli to co wprowadzimy pokrywa się z przedziałem 8.30 - 8.50 (ten z bazy) w tym wypadku wprowadzam 8.00 - 9.30 to powinien wyrzucić błąd. Niestety mój warunek nie działa za dobrze, a nie mam już pomysłu.

Pozdrawiam
Z góry dziękuje.

Poradziłem już sobie, dla potomnych:

Zamieniamy godziny (przecinkowe) na same minuty,
tworzymy dwa przedziały za pomocną range i porównujemy je array_intersect mamy dzięki temu część wspólną.

Jeżeli zna ktoś jeszcze inny sposób to proszę o post.
Dziekuje