Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Przedziały czasowe
cv65
post
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 9
Dołączył: 12.04.2009

Ostrzeżenie: (20%)
X----


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

Ten post edytował cv65 26.03.2013, 10:50:03
Go to the top of the page
+Quote Post

Posty w temacie
- cv65   [PHP]Przedziały czasowe   26.03.2013, 11:06:54


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 Aktualny czas: 20.08.2025 - 15:58