Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Název směny z datumu

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
NouF
Člen
Avatar
NouF:10.9.2017 15:38

Ahoj,

můžu někoho poprosit o řešení této situace?

Jak napsat kod, abych z datumu dostal informaci o tom, jaká směna je aktivní? Např. 10.9.2017 od 7:00 do 19:00 je směna Bílá a má denní? Jak napsat kod, kterému zadám datum a čas a ono to vrátí barvu směny?

Barvy jsou Bílá, Hnědá, Šedá, Fialová - Pracujou 12h směny 7:00 - 19:00 a 19:00 - 7:00

Styl opakování je 2 dny denní a 2 dny noční pak následujou 4 dny volna. V příloze je grafické vyzobrazení.

Jak na to?

Díky,

Editováno 10.9.2017 15:39
 
Odpovědět
10.9.2017 15:38
Avatar
NouF
Člen
Avatar
NouF:13.9.2017 0:30

Pomůže někdo? Nepotřebuji řešení, bude stačit napsat, jak to řešit.

Díky

Editováno 13.9.2017 0:30
 
Nahoru Odpovědět
13.9.2017 0:30
Avatar
David Oczka
Tvůrce
Avatar
Odpovídá na NouF
David Oczka:13.9.2017 9:29

Nevím, jak v PHP, ale tak obecně ta data máš někde uložená. A pravděpodobně jsou uložená jako datum a čas OD-DO. Pokud ta data nejsou v Unix formátu, převedl bych je a to samé i s dotazovaným datem. Pak už by jen stačilo kontrolovat, zdali se dotazovaný čas, teď již v počtu sekund, nachází uvnitř intervalu OD-DO. Zbytek už snad není problém...

 
Nahoru Odpovědět
13.9.2017 9:29
Avatar
NouF
Člen
Avatar
Odpovídá na David Oczka
NouF:14.9.2017 0:39

Diky za tip. Toto mě taky napadlo, ale zase jsem nechtěl uchovávat x tisíc dat navíc. Protože ono by to mělo jít jen "spočítat". Něco ve stylu vzít si nejaký "nulový" bod a spočítat kolik uběhlo dní od toho data atd.. Jen nevím jak přesně :)

 
Nahoru Odpovědět
14.9.2017 0:39
Avatar
David Oczka
Tvůrce
Avatar
Odpovídá na NouF
David Oczka:14.9.2017 8:12

No, tak jestli je návrh uložení dat na Tobě, tak jednoduše by to šlo takto:
Psal jsi, že trvání směny je neměnné, prostě 12h, takže stačí ukládat jen jedno datum, respektive unixový čas. A pak už jen barvu směny. Čas v databázi totiž bude vždycky nějaký den a 7:00 nebo 19:00, což Ti rozlišuje směny na denní a noční. Databáze tedy bude obsahovat sloupce: zamestnanec(klíč), cas_smeny(klíč), barva_smeny.

Když pak budeš hledat, není už třeba hledat v nějakém rozmezí, ty z toho času, co uživatel zadá, přece jsi schopen určit, jestli se ptá na denní nebo noční směnu, takže se ten zadaný čas upraví na unixový čas dané směny a podle něj se bude hledat v databázi ve sloupci cas_smeny, což navrátí všechny zaměstnance dané směny a jejich barvu směny... Stejně tak bude tato databáze výhodná, když budeš hledat podle zaměstnance.

PS: Ačkoliv si to možná neuvědomuješ, tak UNIXový čas je právě počet sekund vzatý od určitého "nulového" bodu. ;)

 
Nahoru Odpovědět
14.9.2017 8:12
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.