Générateur de liste déroulante

Soyez le premier à donner votre avis sur cette source.

Snippet vu 28 725 fois - Téléchargée 24 fois

Contenu du snippet

Voici une petite fonction sans prétention mais qui peut rendre des services :)
Elle permet, à partir d'une requête SQL, de retourner le code HTML d'une liste déroulante (<select><option>...).
On peut également définir une valeur par défaut lors de l'affichage de la liste déroulante (selected="selected") grâce au paramètre $selected auquel vous attribuez l'identifiant de l'élément à afficher. L'élément 0 est l'élément affiché par defaut.
Le paramètre $nom correspond à l'attribut "name" de la liste.

Voilà, simple comme "bonjour" :)

Source / Exemple :


/**

  • Fonction creer_select
  • Renvoi le code HTML d'une liste déroulante en fonction de la requête
  • SQL ($sql). La liste déroulante portera le nom $nom et sélectionnera
  • par défaut l'élément portant l'id $selected
    • /
function creer_select ($sql, $nom, $selected = 0, $defautSelected = 'Cliquez ici pour sélectionner') { // On execute la requête if (false != ($query = mysql_query ($sql))) { // On vérifie que la requête retourne quelque chose if (mysql_num_rows ($query) != 0) { // Variable $html contenant le code HTML à renvoyer $html = '<select name="'.$nom.'"> <option value="0"'.(($selected == 0)?' selected="selected"':'').'>'.$defautSelected.'</option>'; // Boucle parcourant le résultat de la requête while ($value = mysql_fetch_row ($query)) { // Pour chaque enregistrement on ajoute une option dans la liste $html .= ' <option value="'.$value[0].'"'.(($selected == $value[0])?' selected="selected"':'').'>'.$value[1].'</option>'; } // Fin de la liste déroulante $html .= '</select>'; // On renvoi le code HTML return $html; // Sinon, si la requête ne retourne rien } else { // On renvoi false return false; } // Sinon la requête est fausse } else { // On renvoi false return false; } }

Conclusion :


Je n'ai pas constaté de bug mais je n'ai pas non plus tester ma fonction dans tous les sens.
Donc si vous voyez des corrections ou des améliorations à apporter, je suis à l'écoute :)

A voir également

Ajouter un commentaire Commentaires
Messages postés
54
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
8 avril 2013

J'ai bien essayé par session
je récupère l’émail du destinataire dans une session

session_start();
$_SESSION['email_dest']= $_GET['email_adh'];
//echo $_SESSION['email_dest']; // décocher pour voir si on récupère bien le GET en provenance de la liste_adh

je récupère bien la $_SESSION dans mon formulaire

echo "<tr><td> Email Destinataire : </td><td></tr>";

Mais dés que choisi un modèle par la function , les données de $_SESSION['email_dest']ne sont plus disponibles
Messages postés
28
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
5 octobre 2011

A partir du moment où tu recharges ta page, c'est comme si tu en changeais. Ce fonctionnement est tout à fait normal. Comme dit précédemment, tu dois stocker tes variables soit :
- dans ton formulaire via des champs cachés (type="hidden"), tu retrouveras alors tes variables dans le tableau $_POST[]
- dans ton url mais ces variables seront visibles par l'utilisateur, tu les retrouveras dans le tableau $_GET[]
- dans une session PHP. Tu les retrouveras alors dans $_SESSION[]
Messages postés
54
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
8 avril 2013

Bonjour vence66

merci de ta réponse et excuses le retard,
quelques jours de congés les pieds en bouquets de violettes, ça fait du bien
le script est celui ci dessus du 26 juillet
moi je ne change pas de page, mais le fait de charger le contenu de la Function combo par submitbouton recharge la page et remet a zéro toutes les variables de la page ou reçues par post dans la page ??????????
les deux formulaires ne sont pas imbriqués (voir script)
merci de tes lumieres

à+
Messages postés
28
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
5 octobre 2011

Bonjour,
Je n'ai pas bien compris le fonctionnement de ton formulaire mais effectivement si tu changes de page lors d'une action, tu dois faire passer tes variables sur la page suivante soit par POST, soit pas GET, soit pas SESSION. Les variables ne se transmettent pas de page à page toutes seules. :-)
Messages postés
54
Date d'inscription
dimanche 20 décembre 2009
Statut
Membre
Dernière intervention
8 avril 2013

Bonjour vence66

ta fonction fonctionne très bien à toutes les sauces ou presque j'ai un problème
quant on a 2 formulaires dans la même page, le submit du formulaire de la fonction remet a zéro toute les variables de la page et les variables reçues en post d'une autre page
je m'explique je reçois une liste d'email d'une page php en post ou en get
elle s'affiche bien dans mon formulaire général
par la combo je choisi un modèle d’émail a envoyer à la liste
quant je confirme le choix de la combo
toute la liste a disparue et le modèle d’émail est bien affiché dans le textarea
je pense du a rechargement de la page pour afficher le modèle

as tu eu déjà ce problème ?? y a t il une solution ???

Merci de m'aider dans la dernière ligne droite tout le reste fonctionne
pour l'instant je fais un
ctrl A sur le champ BBC
CTL C
je charge le modèle et ensuite un
ctrl V pour remettre la liste des e mails adhérents dans le champ
et je remplis le reste des champs du formulaire d'envoi

pas simple !!!
Afficher les 41 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.