Autor | Zpráva | ||
---|---|---|---|
mackopu Profil |
#1 · Zasláno: 8. 1. 2009, 16:28:20
Potřeboval bych vypsat do formuláře select, ve kterém budou uvedeny všechny měsíce a roky od zadaného "startovacího" měsíce a roku do měsíce a roku aktuálního (dnes).
Ten to kód není uspokojivý: if(!isset($obdobi)) { $obdobi = Date("Y-m"); } echo " období: <select size=\"1\" name=\"obdobi\">\n"; $zacatek_rok = "2007"; $zacatek_mesic = "06"; $konec_rok = Date("Y"); $konec_mesic = Date("m"); for ($i=$zacatek_rok; $i<=$konec_rok; $i++) { for ($x=1; $x<=12; $x++) { if(Date("Ym") >= $i.$x) { echo " <option value=\"".$i."-".str_pad($x, 2, "0", STR_PAD_LEFT)."\"".($i."-".str_pad($x, 2, "0", STR_PAD_LEFT) == $obdobi ? " selected" : "").">".$x." / ".$i."</option>\n"; } } } Jak ho vylepšit a optimalizovat? |
||
mylan Profil |
#2 · Zasláno: 8. 1. 2009, 23:44:53 · Upravil/a: mylan
skúsil som to a vypisuje to aj mesiace, ktoré sa nemajú vypisovať. Riešil som niečo podobné, tiež to nebude asi ideálne, ale funguje, tak som ti to upravil:
<?php if(!isset($obdobi)) {$obdobi = date("Y-m");} $start_month = '06'; $start_year = '2007'; echo "\t období: <select name='obdobi'>\n"; for ($m = $start_month; mktime(0, 0, 0, $m, 1, $start_year) <= time(); $m++) { $t = mktime(0, 0, 0, $m, 1, $start_year); $sel = ($obdobi == date("Y-m", $t)) ? " selected='selected'" : ""; echo "\t\t<option value='".date("Y-m", $t)."'$sel>".date("m / Y", $t)."</option>\n"; } echo "\t</select>\n\n"; ?> Alebo čo konrétne na tom ešte potrebuješ upraviť? |
||
mackopu Profil |
#3 · Zasláno: 9. 1. 2009, 04:03:47
Ano, to je přesně ono. Víc nepotřebuji.
Díky moc. |
||
Časová prodleva: 9 let
|