wNogachSpisz
12.09.2012, 17:04:03
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

Wiem, szału nie ma
zakręcony
12.09.2012, 17:22:08
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
wNogachSpisz
12.09.2012, 17:26:20
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
12.09.2012, 17:37:12
Jak sortowania nie potrzeba to 1 kolumna i 7 wierszy na godzinki. W formularzu zarządzania tym tylko sobie przypisać gdzie jest jaki dzień

Albo nawet cały tekst mający się wyświetlać wrzucić w 1 komórkę. Po co kombinować?
wNogachSpisz
12.09.2012, 17:39:02
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
zakręcony
12.09.2012, 17:54:07
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?
wNogachSpisz
12.09.2012, 17:57:23
Powtarzasz pięciokrotnie "#8-16". Trzeba to ulepszyć.
zakręcony
12.09.2012, 17:59:37
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
wNogachSpisz
12.09.2012, 18:00:48
Dobrze kombinujesz, myśl dalej.
zakręcony
12.09.2012, 18:09:38
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
12.09.2012, 18:12:42
Blisko.
Mam coś takiego:
150916|61014|70
i zastanawiam się czy można lepiej
zakręcony
12.09.2012, 18:18:13
0916|61014|70
tłumaczenie
każdy nieokreślony dzień od do|sobota 10 16|niedziela nieczynne
wNogachSpisz
12.09.2012, 18:20:43
Czekam na dalsze pomysły.
zakręcony
12.09.2012, 18:31:21
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
12.09.2012, 18:35:28
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?

Poszedłeś o krok za daleko, cofnij się i myśl dalej.
melkorm
12.09.2012, 22:01:03
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
wNogachSpisz
12.09.2012, 22:39:45
Pisalem juz dlaczego nie.
melkorm
12.09.2012, 23:29:32
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
13.09.2012, 00:32:12
OK więc stoimy na czymś takim:
pn-pt:8-16
sob:9-15
niedz:nieczynne
0816|60915|7pn-pt:8-16
sob:nieczynne
niedz:nieczynne
0816|67pn-pt:8-16
sob:cała dobę
niedz:cała dobę
0816|671pn-sro:8-16
czw-pt:9-15
sob:10-14
niedz:całą dobę
0816|450915|61014|71pn:8-16
wt-so:9-15
niedz:nieczynne
0816|260915|7Ma ktoś jeszcze jakiś pomysł lub widzi BUG'a?
Damonsson
13.09.2012, 02:55:13
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
13.09.2012, 09:53:49
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.