Une fonction PHP pour afficher des listes déroulantes

Publié le 03 juillet 2008 par Avi Teboul

Cette fonction n'a rien d'exceptionnel, elle va simplement vous aider à afficher des listes déroulantes de chiffres, je m'en sers surtout pour les champs date de naissance sur mes formulaires. J'ai ajouté quelques petites options pour certains cas de figure, comme ajouter un style css à la liste etc. ...

Liste déroulante pour afficher une liste de chiffres

<?php
function liste_deroul( $nom, $debut, $fin, $id, e="color: #66cc66;">].'">'.$_POST[$nom].'</option>';       
                        }
                        for ($i=$debut; $i<=$fin; $i++){
                                echo'<option value="'.$i.'">'.$i.'</option>';   
                        }
        echo'</select>';
}
?>

pour afficher la liste des 31 jours du mois faites par exemple :

<?php
 liste_deroul( 'jours', 1, 31, 'jours', 'date');
?>

facile non ? répétez-le pour la liste des mois de 1 à 12

et pour les années utilisez des variables !! Par exemple pour afficher la listes de années de naissance des 12 à 90 ans :

<?php $debut = $an-12;  $fin = $an-90; ?>
        <?php liste_deroul( 'aa' , $fin,  $debut, 'aa', 'dateP'); ?>

Autre dérivée, la même fonction qui récupère des valeurs passées en paramètres

<?php
function liste_deroul_edit( $nom, $debut, $fin, $id, $val, $class = 'dateP'){
        echo'<select name="'.$nom.'" size="1" id="'.#160;               if ( isset ( $_POST['submit'] ) ) {
                                echo'<option value="'.$_POST[$nom].'">'.$_POST[$nom].'</option>';       
                        }
                        for ($i=$debut; $i<=$fin; $i++){
                                echo'<option value="'.$i.'">'.$i.'</option>';   
                        }
        echo'</select>';
}
?>

pour afficher la liste des 31 jours du mois faites par exemple :

<?php
 liste_deroul( 'jours', 1, 31, 'jours', 'date');
?>

facile non ? répétez-le pour la liste des mois de 1 à 12

et pour les années utilisez des variables !! Par exemple pour afficher la listes de années de naissance des 12 à 90 ans :

<?php $debut = $an-12;  $fin = $an-90; ?>
        <?php liste_deroul( 'aa' , $fin,  $debut, 'aa', 'dateP'); ?>

Autre dérivée, la même fonction qui récupère des valeurs passées en paramètres

<?php
function liste_deroul_edit( $nom, $debut, $fin, $id, $val, $class = 'dateP'){
        echo'<select name="'.$nom.'" size="1" id="'.$id.'" class="'.$class.'" >';
                                echo'<option value="'.$val.'">'.$val.'</option>';       
                        for ($i=$debut; $i<=$fin; $i++){
                                echo'<option value="'.$i.'">'.$i.'</option>';   
                        }
        echo'</select>';
}
?>

Cas concret : après l'inscription je veux récupérer le jour de naissance d'un membre qui édite son profil !

<?php
$val = 25; //résultats issus d'une requête !!
liste_deroul_edit('jours', 1, 31, 'jours', $val, 'date');
?>