Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][PHP] terminarz, jak pokazac wolne terminy użytkowników terminarza
jamesb
post 6.03.2010, 20:25:53
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2008

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


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

Ten post edytował jamesb 7.03.2010, 11:40:39
Go to the top of the page
+Quote Post
krzysiekk
post 6.03.2010, 23:07:23
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


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. ?>
Go to the top of the page
+Quote Post
jamesb
post 7.03.2010, 11:46:36
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2008

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


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.
Go to the top of the page
+Quote Post
krzysiekk
post 7.03.2010, 20:20:29
Post #4





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


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 .







Go to the top of the page
+Quote Post
jamesb
post 7.03.2010, 22:25:43
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2008

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


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??
Go to the top of the page
+Quote Post
krzysiekk
post 7.03.2010, 22:31:58
Post #6





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


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

Ten post edytował krzysiekk 7.03.2010, 22:37:00
Go to the top of the page
+Quote Post
jamesb
post 7.03.2010, 22:51:59
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 5.07.2008

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


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
Go to the top of the page
+Quote Post
Kużdo
post 7.03.2010, 22:58:38
Post #8





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


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...
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 29.06.2025 - 21:17