Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dni tygodnia i godziny - relacja
GoldeNx3
post 2.03.2018, 10:11:06
Post #1





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: 24.12.2010

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


Witajcie,

Piszę skrypt, który umożliwi użytkownikowi przypisanie do dni tygodnia wiele godzin.
Np. jestem dostępny w:

Poniedziałek od 10:00 - 16:00
Wtorek od 12:00 - 20:00
Sroda nie jestem dostępny
Czwartek od 12:00 - 13:30

Jak mogę to zapisać w bazie? Osobna baza danych dla dni tygodnia i godzin i relacje między nimi po ID?
Go to the top of the page
+Quote Post
Pyton_000
post 2.03.2018, 10:14:40
Post #2





Grupa: Zarejestrowani
Postów: 7 454
Pomógł: 1316
Dołączył: 26.10.2005

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


A jakie kryterium rezerwowania godzin? Pełna dowolność tj mogę godziny od - do czy np. tylko ramki po 30 min?
Go to the top of the page
+Quote Post
GoldeNx3
post 2.03.2018, 10:17:21
Post #3





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: 24.12.2010

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


Ramki po godzinie lub 45 minut w zależności jak użytkownik zaznaczy. Wiem, że to może być trudniejsze do zrobienia więc wystarczą mi ramki np. godzinne
Go to the top of the page
+Quote Post
Pyton_000
post 2.03.2018, 10:25:10
Post #4





Grupa: Zarejestrowani
Postów: 7 454
Pomógł: 1316
Dołączył: 26.10.2005

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


Ja zrobiłem sobie tak że w php generuję kalendarz dynamicznie a w BD zapisuję tylko rezerwacje.
Go to the top of the page
+Quote Post
GoldeNx3
post 2.03.2018, 10:28:37
Post #5





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: 24.12.2010

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


Tak, ale mnie jest potrzebne od jednego użytkownika deklaracja w które dni i o której godzinie jest dostępny, a drugi użytkownik będzie mógł się w te godziny "wstrzelić" coś jak rezerwacja godzin w restauracji, ale dziennie te godziny mogą być inne i właśnie dlatego potrzeba mi, aby zapisać w które godziny i dni jak kto jest aktywny.
Go to the top of the page
+Quote Post
Pyton_000
post 2.03.2018, 10:35:24
Post #6





Grupa: Zarejestrowani
Postów: 7 454
Pomógł: 1316
Dołączył: 26.10.2005

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


A ok, to nie zrozumiałem.

No to tabelka:

user_id, week_day, hours_from, hours_to
Go to the top of the page
+Quote Post
GoldeNx3
post 2.03.2018, 10:43:36
Post #7





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: 24.12.2010

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


Dobra. A dajmy przykład tej tabeli:


ID: 1
UserID: 12
Week: Monday
Hours_From: 12:00
Hours_To: 20:00

Stworzę drugą tabelę rezerwację w której dany użytkownik będzie mógł zarezerwować miejsce:

ID: 2
ID_Time: 1 (Tutaj ID z tabeli wcześniejszej w celu stworzenia relacji)
Hour: 13:00

Będzie to tak działać?
Go to the top of the page
+Quote Post
Pyton_000
post 2.03.2018, 10:46:18
Post #8





Grupa: Zarejestrowani
Postów: 7 454
Pomógł: 1316
Dołączył: 26.10.2005

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


Tak dokładnie smile.gif
Możesz też wtedy założyć UNIQUE na kolumnach (ID_Time, Hour) żeby nie dało się 2x na tą samą godzinę zapisać.
Go to the top of the page
+Quote Post
GoldeNx3
post 2.03.2018, 11:40:56
Post #9





Grupa: Zarejestrowani
Postów: 223
Pomógł: 1
Dołączył: 24.12.2010

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


Powiedz mi jeszcze, w jaki sposób mogę podzielić ten przedział czasowy np. od 12:00 do 20:00 aby użytkownik mógł wybrać jedną pełną godzinę np. 16:00. Czyli jak to rozdzielić, by godzina wyświetlała się od 12:00 do 20:00 co godzinę:


12:00 - klikalny link
13:00 - klikalny link
14:00 - klikalny link
15:00 - klikalny link
16:00 - klikalny link
17:00 - klikalny link
18:00 - klikalny link
19:00 - klikalny link
20:00 - klikalny link
Go to the top of the page
+Quote Post
Pyton_000
post 2.03.2018, 11:49:52
Post #10





Grupa: Zarejestrowani
Postów: 7 454
Pomógł: 1316
Dołączył: 26.10.2005

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


  1. <?php
  2. $begin = new DateTime( '12:00' );
  3. $end = new DateTime( '21:00' );
  4.  
  5. $interval = new DateInterval('PT1H');
  6. $period = new DatePeriod($begin, $interval, $end);
  7.  
  8. foreach ( $period as $dt )
  9. echo $dt->format( "H:i\n" );
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: 18.08.2018 - 09:30