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