Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL][HTML]Rezerwacja terminów, problem z bazą danych i sprawdzaniem zarezerwowanych terminów
hiszpaniec
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 6.01.2007

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


Witam, zamierzam napisać skrypt rezerwacji terminów z takimi funkcjami jak:
1)wybranie miesiąca/dnia i zatwierdzenie
2)wypisanie wolnych godzin w formularzu
3)wybranie ile ma trwać rezerwacja,
4)sprawdzenie czy nie koliduje z innymi rezerwacjami oraz uwzględnienie tego aby pomiędzy każdą rezerwacją było 20 minut na przygotowanie się i 20 minut po rezerwacji na posprzątanie.
Jak mam rozwiązać takie coś?

Ten post edytował hiszpaniec 26.05.2010, 13:56:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


hej możesz to zrobić np. tak:

tabela:
course_id | course_date | start_time | end_time | reserved_end_time (end_time + 20min)

a w niej data, godzina rozpoczęcia, godzina zakończenia i godzina zakończenia +20min ( bo w tym czasie inny termin nie może się zacząć)

i teraz przy próbie dodania nowego terminu trzeba uwzględnić 3 przypadki:
1. Czas startu nowego terminu nie może znajdować się między startem a zarezerwowanym końcem innego terminu
2. Zarezerwowany koniec(czyli koniec +20min) nowego terminu nie może znajdować się między startem a zarezerwowanym końcem innego terminu
3. nowy termin nie może zaczynać się i kończyć w czasie innego terminu

czyli, sprawdzasz czy któryś z tych przypadków jest spełniony dla wybranej daty, jeżeli poniższe zapytanie zwróci wartość większą niż 0, to znaczy że ten termin kolidowałby z innym:

  1. $new_start_time; // godzina np. 15:30
  2. $new_end_time; // godzina np. 15:30 !!!! tutaj wybrana godzina + doliczone 20min przerwy
  3. $new_course_date; // data
  4.  
  5. $sql = "SELECT course_id FROM courses WHERE course_date = $new_course_date AND (($new_start_time > start_time AND $new_start_time < reserved_end_time) OR ($new_end_time > start_time AND $new_end_time < reserved_end_time) OR( $new_start_time < start_time AND $new_end_time > end_time))";


oczywiście warto by jeszcze dodać jakiś kalendarzyk z zamalowanymi zajętymi terminami dla zwiększenia usablity
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 21:35