Général

Les PCRE

Les POSIX

Pratique

Linux

Spécial php

Les billets de fred

Les list-box ou combo-box et vos formulaires

Qu'est ce qu'une list-box ?

En fait, il s'agit simplement d'une liste <select> dans un formulaire.

Mais euh... t'es idiot de nous faire un tuto là-dessus, on sait tous faire une liste select !

Oui certainement, mais la particularité de la list-box (ou combo-box) est que cette liste est
créée au départ d'une fonction php exploitée en dehors du formulaire
et appelée dans celui-ci en fonction des besoins. En gros, pour des élements standardisés de liste select, on aura un formulaire à l'intérieur duquel on appelera les liste dont on besoin.

Comme d'habitude, un petit exemple valant mieux qu'un long discours, on va y aller au plus simple en illustrant le sujet avec un système de list-box pour les dates dans vos formulaires.
  • une liste pour les jours du mois
  • une pour les mois
  • une dernière pour lister des années.
1) Une list-box pour les jours d'un mois

Voilà la fonction pour lister les jours des mois... de 1 à 31
<?php
function listbox_jour ($jour=''){
    for ($i=1;$i<32;$i++)
    {
    if ($i<10) $i='0'.$i;
    echo '<option value="',$i,'"';
    if($i==$jour)
    {
    echo ' selected';
    }
    echo '>',$i,'</option>';
    }
}
?>

* Vous verrez par la suite pourquoi j'ai mis $jour='' comme paramètre dans la parenthèse de la fonction

Voilà, rien de bien compliqué, vous avez tous compris le principe, chacun de vous sachant se servir d'une boucle for().

2) Une list-box pour les mois de l'année

Pour les mois de l'année, la fonction va avoir une forme un peu plus particulière, la voici :
<?php
$listemois= array(
        'janvier',
        'février',
        'mars',
        'avril',
        'mai',
        'juin',
        'juillet',
        'août',
        'septembre',
        'octobre',
        'novembre',
        'décembre'
        );
function listbox_mois ($mois='')
{        
global $listemois;
    for ($i=1;$i<13;$i++)
    {
    $j = $i-1;
    if ($i<10) $i='0'.$i;
    echo '<option value="',$i,'"';
    if($i==$mois){
    echo ' selected';
    }
    echo '>',$listemois[$j],'</option>';
    }
}
?>



3) Une list-box pour une série d'années

Rien de bien compliqué ici, on est sur le même principe que pour les jours des mois.
<?php
function listbox_an ($an='')
{
    for ($i=1950;$i<=$an;$i++)
    {
    echo '<option value="',$i,'"';
    if($i==$an){
    echo ' selected';
    }
    echo '>',$i,'</option>';
    }
}
?>


Voilà, il suffit de réunir ces trois fonctions sur une même page, de la nommer par exemple maliste_combo.php et de la placer dans un dossier fonctions par exemple.
Bref, vous êtes suffisamment intelligent(e) pour développer votre config tout(e) seul(e).

Et voilà, via notre fichier complet, ce que donne l'affichage nos trois listes assemblées :
 


Et voici le code pour générer ce genre d'affichage :

<?php
$id_jour=date('d');
$id_mois=date('m');
$id_an=date('Y');
require('fonctions/maliste_combo.php');
echo '<form>
<table>
<tr><td>
        <select name="jour_deb">',listbox_jour ($id_jour),'</select>
        <select name="mois_deb">',listbox_mois ($id_mois),'</select>
        <select name="an_deb">',listbox_an ($id_an),'</select>
<br /><br /></td></tr>
</table>
</form>';
?>
ADAM Benjamin 2008 | Admin