Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][Bazy Danych] Kolumna z godzinami otwarcia biura
Forum PHP.pl > Forum > Przedszkole
wNogachSpisz
Witajcie,

Projektuję właśnie bazę danych a konkretnie kolumnę w której chcę zapisywać godziny w jakich czynne jest biuro.

Dni w tygodniu jest 7, godzin w dniu 24, biuro może być czynne w dowolnym dniu o dowolnych godzinach, ale zazwyczaj jest to pon.-pt. 8-16, sob. 9-14, niedź. zamknięte.

Kolumny nie planuje przeszukiwać, choć gdyby dało się posortować od najdłużej do najkrócej czynnych, byłoby bardzo dobrze.

Mam już właściwie swojego kandydata ale pytam Was o zdanie bo IMO to świetna rozrywka i sprawdzian umiejętności.


Dla najlepszej odpowiedzi przewidziana nagroda - 15% rabat na hosting w iq.pl wink.gif Wiem, szału nie ma smile.gif
zakręcony
Projektować kolumnę? Nie wiem, ale nie prościej jest w wiersze wrzucić dni, a godziny w kolumny. A w zarządzaniu tylko zaznaczać/odznaczać checboksy kiedy jest czynne biuro? Z 1 kolumną to co tam projektować, nazwa i wrzucasz wiersze z danymi np w postaci:

poniedziałek#18-16
wtorek#18-16
---
niedziela#nieczynne

Nie, albo nie zrozumiałem problemu, albo... nie wiem wstydnis.gif
wNogachSpisz
Myślałem bardziej nad jedną kolumną. Wrzucając każdy dzień w osobną kolumnę miałbyś z 90% redundancji (w ramach jednego tylko wiersza!). Nie wspominając o tym że wiele kolumn mija się z celem, bo tak jak pisałem, sortowanie nie jest potrzebne,
zakręcony
Jak sortowania nie potrzeba to 1 kolumna i 7 wierszy na godzinki. W formularzu zarządzania tym tylko sobie przypisać gdzie jest jaki dzień smile.gif

Albo nawet cały tekst mający się wyświetlać wrzucić w 1 komórkę. Po co kombinować?


wNogachSpisz
Nie rozumiem co to znaczy 1 kolumna i 7 wierszy na godzinki.
Całego tekstu nie chce wrzucać, bo chce mieć swobodę formatowania przy prezentacji.

Co do formularzyka, to trudność kodowania nie ma znaczenia smile.gif
zakręcony
Chcesz dane wrzucić do jednej kolumny.
To albo:

kolumna
8-16 (1 wiersz)
8-16 (2 wiersz)
8-16 (3 wiersz)
8-16 (4 wiersz)
8-16 (5 wiersz)
8-14 (6 wiersz)
nieczynne (7 wiersz)

albo
kolumna
i w jedna komórkę wrzucasz 8-16#8-16#8-16#8-16#8-16#8-14#nieczynne (#separator)

czy nie zrozumiałem złożoności problemu? wink.gif
wNogachSpisz
Powtarzasz pięciokrotnie "#8-16". Trzeba to ulepszyć.
zakręcony
Powtarzam, bo dzis pn-pt masz w tych samych godzinach, a jutro możesz zacząć we wtorek i czwartek zaczynać od 9. Lepiej chyba dodać teraz taka możliwość niż potem przebudowywać rozwiązanie. Tak mi się wydaje wink.gif
wNogachSpisz
Dobrze kombinujesz, myśl dalej.
zakręcony
Możesz do komórki wrzucić dane:
12345,8-16#6,9-14#7,nieczynne

cyfra po lewej przecinka, to nr dnia w tygodniu, po prawej godziny
# separator
wNogachSpisz
Blisko.

Mam coś takiego:

150916|61014|70

i zastanawiam się czy można lepiej tongue.gif
zakręcony
0916|61014|70

tłumaczenie
każdy nieokreślony dzień od do|sobota 10 16|niedziela nieczynne
wNogachSpisz
Czekam na dalsze pomysły.
zakręcony
na upartego można założyć, że dwa ostatnie wpisy odpowiadają sobocie i niedzieli na sztywno, a w pierwszym rekordzie są godziny bazowe i wtedy

0916|+1-2|0

+1h do 9 i -2h od 16

wpis dla innych godzin w piątku był by taki

0916|5+2-0|+1-2|0

czyli pn-czw : 9-16
pt: 11-16 (nie wiem czy przed zerem dawać minus, ale dla czytelności zapisu może warto)
sobota 10-14
niedziela nieczynne
wNogachSpisz
Czytelność nie ma znaczenia, liczy się długość. Dobry pomysł z tymi +-.
Tylko co jeśli np. w środę biuro jest czynne w innych godzinach niż przez resztę tygodnia? smile.gif
Poszedłeś o krok za daleko, cofnij się i myśl dalej.
melkorm
A dlaczego nie wrzucić tego do osobnej tabeli z kolumnami od - do + dzień tygodnia ? (oczywiście wraz z relacją do biura) Wtedy możesz sortować, przeszukiwać itp smile.gif
wNogachSpisz
Pisalem juz dlaczego nie.
melkorm
Pisałeś o kolumnach dla każdego dnia, nie o osobnej tabeli co jest naturalne. Zresztą jeżeli chcesz tylko jedną kolumnę to php -> array serialize lub json_encode i po sprawie ?
wNogachSpisz
OK więc stoimy na czymś takim:

pn-pt:8-16
sob:9-15
niedz:nieczynne
0816|60915|7

pn-pt:8-16
sob:nieczynne
niedz:nieczynne
0816|67

pn-pt:8-16
sob:cała dobę
niedz:cała dobę
0816|671

pn-sro:8-16
czw-pt:9-15
sob:10-14
niedz:całą dobę
0816|450915|61014|71

pn:8-16
wt-so:9-15
niedz:nieczynne
0816|260915|7

Ma ktoś jeszcze jakiś pomysł lub widzi BUG'a? smile.gif
Damonsson
1. A coś takiego?

pn-pt:8-16
sob:9-15
niedz:nieczynne
88|696|7

od 8 + 8h | od 9 + 6h

itd.


---------------------------
2.

Albo jeszcze z tamtym pomysłem, przy założeniu racjonalnych godzin otwarć i zamknięć, że godzina otwarcia będzie mniej więcej, od 6 do 12, czyli 6=6 7=7 8=8 9=9 10=0 11=1 12=2, a zamknięcia mniej więcej od 14 do 19, czyli 14=4 15=5 16=6 17=7 18=8 19=9. Eliminujemy liczby dwucyfrowe.

pn-sro:8-16
czw-pt:9-15
sob:10-14
niedz:całą dobę
86|4595|604|71
wNogachSpisz
Niestety, znów trochę za daleko:

671

Czytamy jako: w sobotę i niedzialę czynne całą dobre.
Ale równie dobrze jako: w sobotę czynne od 7 do 8 rano.
Dwuznaczności chcę uniknąc. Drugi pomysł z zapisywaniem tylko niepełnej informacji o godzinie też odpada.


Można pokombinować z użyciem innego znaku do zaznaczania że czynne całą dobę, zamiast "1" np. "C".
Wszystkie znaki printable ASCII są dozwolone.
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.