Autor Zpráva
mackopu
Profil
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
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
Ano, to je přesně ono. Víc nepotřebuji.
Díky moc.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: