Autor | Zpráva | ||
---|---|---|---|
amorekj Profil |
Dobrý den,
napsal jsem nebo spíš jsem se pokusil o trochu svůj skript tak se prosím nezlobte za mou kvalitu, nicméně nefunguje. Má to být skript, který vypíše datumy, které jsou třeba mezi 02.10.2014 a 15.01.2015. :) Byl bych moc rád, kdybyste mi chybu pomohli najít nebo mě někam přesměrovali - jaká funkce se kde může použít. Do databáze zapisuji 2 datumy (od - do). Název datumů + informace jejich. Jsem teprve na začátku a řeším jak je všechny vypsat, poté bych rád vyřešil jak k datumům přiřadit název a informace. Rád bych vytvořil pomocí toho kalendář - skript na kalendář mám. Píše mi to: Warning: mktime() expects parameter 6 to be long, string given in __ on line 40 (zacyklovává se to) while ($zaznam = mysql_fetch_array($vypis )){ echo $zaznam["od"]."-".$zaznam["do"].":"; $day_num = SubStr($zaznam["od"], 1, 2); $days_in_month = date('t', mktime(0,0,0,SubStr($zaznam["od"], 3, 4), 1, SubStr($zaznam["od"], 6, 10))); while ($zaznam["od"] = $zaznam["do"]){ while ($day_num <= $days_in_month){ echo $zaznam["od"]; $zaznam["od1"] = SubStr($zaznam["od"], 1, 2) + 1; $zaznam["od2"] = SubStr($zaznam["od"], 3, 4); $zaznam["od3"] = SubStr($zaznam["od"], 6, 10); $zaznam["od"] = $zaznam["od1"].".".$zaznam["od2"].".".$zaznam["od3"]; $day_num++; if ($day_num == $days_in_month){ if(SubStr($zaznam["od"], 3, 4) != 12){ $day_num = 1; $zaznam["od2"] = SubStr($zaznam["od"], 3, 4) + 1; $zaznam["od3"] = SubStr($zaznam["od"], 6, 10); $zaznam["od"] = "01.".$zaznam["od2"].".".$zaznam["od3"]; $days_in_month = date('t', mktime(0,0,0,$zaznam["od2"], 1, $zaznam["od3"])); }else{ $zaznam["od3"] = SubStr($zaznam["od"], 6, 10) + 1; $days_in_month = date('t', 1, 1, $zaznam["od3"]); $zaznam["od"] = "01.01.".$zaznam["od3"]; $day_num = 1; } } } } } Děkuji všem za nápady a rady :) |
||
DJ Miky Profil |
Jednodušší řešení, než ručně skládat data, je využít funkce strtotime() a posouvat datum na další den pomocí argumentu
'+ 1 day' :
$pocatecni = '02.10.2014'; $koncove = '15.01.2015'; $datum = strtotime($pocatecni); $zarazka = strtotime($koncove . ' + 1 day'); // je potřeba nastavit zarážku o den později, aby se vypsal i poslední den while($datum < $zarazka) { $formatovany = date('d.m.Y', $datum); // zde si můžeš datum vypsat nebo s ním dále pracovat echo $formatovany, "\n"; $datum = strtotime($formatovany . ' + 1 day'); // posun na další den } Tvůj skript se cyklí kvůli podmínce: while ($zaznam["od"] = $zaznam["do"]){ $zaznam["do"] neobsahuje nulu).
|
||
Joker Profil |
#3 · Zasláno: 29. 1. 2014, 16:54:28
amorekj:
„zacyklovává se to“ Ano, výsledkem tohoto: while ($zaznam["od"] = $zaznam["do"]){ Nějak nevím, jak ta podmínka má být správně. Jinak bych použil podobné řešení jako DJ Miky. Ale ohledně jedné nedávné diskuse, tohle vypadá jako vhodný příklad pro do-while cyklus (resp. v závislosti na situaci, jestli se mají vypisovat i hraniční dny). |
||
amorekj Profil |
#4 · Zasláno: 29. 1. 2014, 17:05:35
Děkuji moc :) To je přímo geniální řešení.
|
||
Časová prodleva: 10 let
|
0