PHP: tendina selezione data a partire da giorno corrente
11/05/2012Una semplice funzione che ci permette la costruzione dinamica di un menu a tendina che offra come opzioni di selezione valori a partire dalla data corrente per un range di anni predefinito.
Utilissimo in caso ad esempio di form di prenotazione, in modo da offrire come opzioni valide solo quelle del range da noi definito.
La funzione è questa (per modificare il range degli anni selezionabili, nella parte di generazione della tendina anni, nel ciclo for sostituire il valore +2 con il valore numerico di incremento desiderato):
function mdy($mid = "mese", $did = "giorno", $yid = "anno", $mval, $dval, $yval)
{
if(empty($mval)) $mval = date("m");
if(empty($dval)) $dval = date("d");
if(empty($yval)) $yval = date("Y");
// tendina dei giorni
$out = "<select name='$did' id='$did'>\n";
for($i = 1; $i <= 31; $i++)
if($i == $dval) $out .= "<option value='$i' selected>$i</option>\n";
else $out .= "<option value='$i'>$i</option>\n";
$out .= "</select>\n";
// tendina dei mesi
$months = array(1 => "gennaio", 2 => "febbraio", 3 => "marzo", 4 => "aprile", 5 => "maggio", 6 => "giugno", 7 => "luglio", 8 => "agosto", 9 => "settembre", 10 => "ottobre", 11 => "novembre", 12 => "dicembre");
$out .= "<select name='$mid' id='$mid'>\n";
foreach($months as $val => $text)
if($val == $mval) $out .= "<option value='$val' selected>$text</option>\n";
else $out .= "<option value='$val'>$text</option\n>";
$out .= "</select>\n";
// tendina degli anni
$out .= "<select name='$yid' id='$yid'>\n";
for($i = date("Y"); $i <= date("Y") + 2; $i++)
if($i == $yval) $out.= "<option value='$i' selected>$i</option>\n";
else $out.= "<option value='$i'>$i</option>\n";
$out .= "</select>\n";
return $out;
}