Générer une liste déroulante HTML de nombres
Cette petite fonction permet de générer une liste déroulante de nombres en une seule ligne de code. Il suffit de lui fournir quelques paramètres obligatoires tels que son nom, la valeur de départ, la valeur d'arrivée, la valeur par défaut et quelques autres données facultatives pour obtenir une belle liste déroulante sexy.
Portion de code
<?php /** * Génère une liste déroulante de nombres * * @author Hugo HAMON <webmaster@apprendre-php.com> * @param string $name Nom de la liste déroulante * @param int $from Valeur de départ (ex: 1970) * @param int $to Valeur d'arrivée (ex: 2020) * @param int $selected Value par défaut sélectionnée * @param array $options Tableau associatif des couples attributs / valeur du tag <select> * @param string $first Première option de la liste (ex: Année de naissance) * @param int $pas Pas d'incrémentation (par défaut à 1) * @return string $html Code html de la liste déroulante * * @example * select_numbers('mois', 1, 12, 7, array('id'=>'mois', 'onchange'=>'this.form.submit()'), 'Votre mois de naissance'); */function select_numbers($name, $from, $to, $selected=0, $options=array(), $first='', $pas=1) { $html = '<select name="'. $name .'"'; if(is_array($options) && sizeof($options)>0) { foreach($options as $name => $value) { $html.= ' '. $name .'="'. $value .'"'; } } $html.= '>'."\n"; // Label vide if(!empty($first)) { $html.= "\t".'<option value="">'. $first .'</option>'."\n"; } for($i=$from; $i<=$to; $i=$i+$pas) { $html.= "\t".'<option value="'. $i .'"'; $html.= ($i == $selected) ? ' selected="selected"' : ''; $html.= '>'. $i .'</option>'."\n"; } $html.= '</select>'."\n"; return $html;}?>
<?php echo select_numbers('mois', 1, 12, 7, array('id'=>'mois'),'Mois'); ?>
<select name="mois" id="mois"> <option value="">Mois</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7" selected="selected">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option></select>
1. Par NOUNOU le 21/07/2011 10:42