jamesb
6.03.2010, 20:25:53
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
6.03.2010, 23:07:23
Witam moze tak
<?
// tablica przedzialow
$TABLE = array(1=>"08:00 - 09:00",2=>"12:00 - 13:00",3=>"14:00 - 16:00");
// id klienta
$id= #id z bazy
// wyswietlenie klientowi
foreach($TABLE AS $key=>$value){
//zapytanie
$QUERY = # pobierz wszystkie zarerwowane terminy gdzieid klienta == $id;
// zarezerwowane przedziały danego klienta w postaci tablicy
$zarezewowne = $QUERY;
if(!in_array($valuelub$key, $QUERY){ $RESULT[]=$valuelub$key;}
//$valuelub$key <= w zaleznosci co zapisujesz w bazie
}
// i klientowi
?>
jamesb
7.03.2010, 11:46:36
tylko chodzi o to skąd wziac tą tabele:
$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
7.03.2010, 20:20:29
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
7.03.2010, 22:25:43
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
7.03.2010, 22:31:58
co to ma wogole rezerwowac

... 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
7.03.2010, 22:51:59
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
7.03.2010, 22:58:38
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.