Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Název směny z datumu

PHP PHP Název směny z datumu American English version English version

Aktivity (1)
Avatar
NouF
Člen
Avatar
NouF:10. září 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. září 15:39
 
Odpovědět 10. září 15:38
Avatar
NouF
Člen
Avatar
NouF:13. září 0:30

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

Díky

Editováno 13. září 0:30
 
Nahoru Odpovědět 13. září 0:30
Avatar
David Oczka
Redaktor
Avatar
Odpovídá na NouF
David Oczka:13. září 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. září 9:29
Avatar
NouF
Člen
Avatar
Odpovídá na David Oczka
NouF:14. září 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. září 0:39
Avatar
David Oczka
Redaktor
Avatar
Odpovídá na NouF
David Oczka:14. září 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  +1 14. září 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.