Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP] terminarz
Forum PHP.pl > Forum > Przedszkole
jamesb
Witam

Mam terminarz spotkań częśc tabeli wygląda tak

ID_user | datagodzina_od | datagodzina_do

zakładając czas pracy od 8:00 do 16:00


jak pokazac terminy wolne w danym dniu lub przedziale dni dla danego użytkownika.

czyli np. mamy rekordy
1|2010-03-06 09:00|2010-03-06 12:00
1|2010-03-06 13:00|2010-03-06 14:00

z tego wynika ze wolne terminy to 08:00 - 09:00, 12:00 - 13:00, 14:00 - 16:00

dzieki za podpowiedz
krzysiekk
Witam moze tak
  1. <?
  2. // tablica przedzialow
  3. $TABLE = array(1=>"08:00 - 09:00",2=>"12:00 - 13:00",3=>"14:00 - 16:00");
  4.  
  5.  
  6. // id klienta
  7. $id= #id z bazy
  8. // wyswietlenie klientowi
  9. foreach($TABLE AS $key=>$value){
  10.  
  11. //zapytanie
  12. $QUERY = # pobierz wszystkie zarerwowane terminy gdzieid klienta == $id;
  13. // zarezerwowane przedziały danego klienta w postaci tablicy
  14. $zarezewowne = $QUERY;
  15. if(!in_array($valuelub$key, $QUERY){ $RESULT[]=$valuelub$key;}
  16.  
  17.  
  18. //$valuelub$key <= w zaleznosci co zapisujesz w bazie
  19. }
  20.  
  21.  
  22. // i klientowi
  23.  
  24.  
  25. print_r($RESULT.);
  26. ?>
jamesb
tylko chodzi o to skąd wziac tą tabele:
  1. $TABLE = array(1=>"08:00 - 09:00",2=>"12:00 - 13:00",3=>"14:00 - 16:00");

te przedziały podałem tylko w przykładzie bo tak wynikało z przykładowych dwóch rekordów.
krzysiekk
witam
ja zapisalem t aprzykladowa tablice jako statyczna rownie dobrze mozna zrobic to w bazie danych np

do bazy wkladasz przedzialy przez panel administracyjny , ktore mozna rezerwowac .. np. 9:00 - 11:30
tablica przedzialy
ID_p | godzina od | godzina do |

no i tblica klienta rezerwujacego przedzial godzinowy


tablica zarezerwowane przedzialy
ID | ID_klient | Data | ID_p |

pozdrawiam .







jamesb
hmm tylko właśnie nie mam konkretnych przedziałów od 8:00 do 16:00 terminy mogą trwac od 15 minut do całych 8 godzin wiec wszystkich nie bardzo da się sprecyzowac

myślałem zeby to zrobic odczycie z bazy zarezerwowanych terminów

8:00 - data1 z rekordu1
data2 z rekordu1 - data1 z rekordu2
data2 z rekordu2 - data1 z rekordu3
itd
ostatni rekord jeśli mniejszy od 16:00 to od data2 do 16:00

tylko da sie to jakos ubrac w kod sensownie??
krzysiekk
co to ma wogole rezerwowac questionmark.gif
... dobra doczytalem terminy ...
to przyjmij sobie pelno godzinowe przedzialy albo caly dzien ...


bo tak jak piszesz to potrzebujesz
pobrac calosc -> posotrowac tablice rosnaco (chyba ze taka pobierzesz z bazy ) i potem porownywac po dwa elementy tablicy i wyjda ci wolne "sektory" czasowe
jamesb
ok myslalem ze to bedzie łatwiejsze do zrobienia. Po prostu wymienie godziny z góry do dołu i zaznacze terminy zajete to bedzie widac na oko ktore sa wolne i nie ma sie co meczyc.
Dzieki za zainteresowanie.
Pozdrawiam
Kużdo
Zapisuj terminy jako wyniki funkcji mktime(), później pobieraj odpowiednie terminy (WHERE data_p >= $data_p AND data_k <= $data_k), a później to trzeba byłoby to jakoś obrobić, ale teraz akurat jakoś nie mam do tego głowy...
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.