| 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: 13 let
|
|||
0