Autor | Zpráva | ||
---|---|---|---|
PetrHodan Profil * |
#1 · Zasláno: 20. 2. 2017, 21:52:31
Ahoj, mám dotaz. Potřebuji poradit, jak napsat to, aby sem mohl k určitému datumu zobrazit určitý obsah (jen vzkaz). Mám to na procvičování příkladů z matematiky, aby se každý den zobrazil předem nadefinovaný příklad, který tam napíšu, nic víc, např. (22.2 - XXX, 23.2 YYY, 24.2 AAA a podobně). Pokud to nepůjde datumově tak alespoň na dny. Snad jsem to napsal rozumně. Díky moc za rady :)
|
||
juriad_ Profil * |
Řešení v PHP může vypadat například takto (umíš PHP?):
function includeExample($path) { $dt = new DateTime(); # dnešní datum $diff = $dt->diff(new DateTime('1970-01-01')); interval od začátku éry $files = glob($path); # načtení všech příkladů $file = $files[$diff->days % count($files)]; # vybrání příkladu podle intervalu include $file; # zobrazení příkladu } A později na místě, kam chceš vložit dnešní přiklad napíšeš: includeExample('examples/*.html'); Každý příklad vložíš do jednoho souboru s koncovkou html v adresáři examples. Samo se to přizpůsobí jakémukoli počtu příkladů. Až dojdou, tak začne zobrazovat příklady od začátku. Příklady se ukazují seřazené podle abecedy (napřed a.html, pak apple.html, pak banan.html atd.) Přidání mnového příkladu způsobí přepočítání a následné zobrazení příkladu, který může být úplně jinde v té řadě. (Toto nejde vyřešit nikterak jednodše aniž by se někam neukládal poslední zobrazený příklad). |
||
PetrHodan Profil * |
#3 · Zasláno: 21. 2. 2017, 14:30:32
juriad:
PHPko ovládám minimálně a to hodně minimálně. Nemohl by jsi mi uvést příklad, jak by to vypadalo v praxi? S nějakými příklady? Nebo textem? Já bych se v tom už trošku orientoval. Děkuju moc |
||
juriad_ Profil * |
#4 · Zasláno: 21. 2. 2017, 14:44:13
V adresáři examples si vytvoříš kolik chceš příkladů v HTML:
apples.html: Váží-li jedno jablko 100 gramů, kolik váží 5 jablek? banana.html: Jaký je objem banánu, má-li délku 20 cm a průměr 3 cm? V těchto souborech (jak už koncovka naznačuje klidně můžeš používat HTML značky. Tedy například: rovnice.html: Urči všechny řešení následující rovnice <br> x<sup>2</sup> + 2x + 1 = 0 Do hlavního souboru (index.php) vložíš to co jsem napsal v [#2]: <?php function includeExample($path) { $dt = new DateTime(); # dnešní datum $diff = $dt->diff(new DateTime('1970-01-01')); interval od začátku éry $files = glob($path); # načtení všech příkladů $file = $files[$diff->days % count($files)]; # vybrání příkladu podle intervalu include $file; # zobrazení příkladu } ?> <!doctype html> <html> ... <body> Dnešní příklad k vyřešení je: <div id="priklad"> <?php includeExample('examples/*.html'); ?> </div> </body> </html> |
||
PetrHodan Profil * |
#5 · Zasláno: 21. 2. 2017, 15:07:45
Skvělý, tahle je to perfektní, jen nerozuním, kdy se co v jaký den zobrazí z těch komentářů #.
|
||
juriad_ Profil * |
#6 · Zasláno: 21. 2. 2017, 15:21:48
1.1.1970 se zobrazí 1. soubor podle abecedy.
2.1.1970 se zobrazí 2. soubor podle abecedy. Proč počítám od 1.1.1970? Protože tehdy začala éra počítačů a veškerý čas na počítačích se počítá od tehdy. To % (modulo) na 7. řádku zajišťuje, že jakmile počet dnů od 1.1.1970 je větší než počet souborů, tak se začne znovu. To je realizováno jako zbytek po dělení. Následně se jen vezme příslušný soubor z pole, a ten se zobrazí. |
||
Keeehi Profil |
#7 · Zasláno: 21. 2. 2017, 15:25:52
PetrHodan:
„jen nerozuním, kdy se co v jaký den zobrazí z těch komentářů“ To se teď nedá přesně určit. Záleží jaký bude den a hlavně kolik těch příkladů bude. Co se dá říct je to, že každý den to bude právě jeden, nějakým to začne (nedá se říct kterým) a další den se zobrazí ten, jehož jméno souboru abecedně následuje po tom co se zobrazil první den. Když se dojde na konec abecedy, zobrazí se abecedně první soubor. |
||
PetrHodan Profil * |
#8 · Zasláno: 21. 2. 2017, 16:43:24
Díky moc! Skvělý :)
|
||
Časová prodleva: 6 let
|
0