Listes déroulantes (1/2)
En réponse à vos questions sur les <select> !
De nombreuses questions ont été posées à ce sujet alors, sans vouloir être exhaustif, quelques réponses... D'autres exemples simples figurent dans la rubrique "SELECT" du tutorial
"Formulaires" !
Rappels HTML
La syntaxe de base pour faire apparaître une liste déroulante dans un formulaire est la suivante :
<form name="..." method="..." action="..."> <select name="..."> <option>...</option> <option>...</option> ... <option>...</option> </select><br> <input type="submit" value="OK"> </form>
Exemple -->
<form> <select name="liste"> <option>Choix 1</option> <option>Choix 2</option> <option>Choix 3</option> </select><br> <input type="submit" value="OK"> </form>
La balise <select> admet quelques attributs dont :
MULTIPLE : pour des sélections multiples...
NAME : le nom du champ
SIZE : le nombre d'items visibles (par défaut 1)
DISABLED : pour empêcher la modification de la sélection
La balise <option> admet quelques attributs dont :
SELECTED : l'item sélectionné (par défaut le premier)
VALUE : la valeur à retourner (sinon c'est le texte de l'item)
Vos questions
Comment construire une liste d'après les valeurs d'un champ d'une base de données ?
listederoul_1.asp
<%URL = _ request.serverVariables("SCRIPT_NAME")%> <!-- #include file="_connexion.asp"--> <% ' au réaffichage, on récupère la sélection if request.form("liste") <> "" then ' traîtement éventuel, ' redirection, etc ... end if%> <%SQL="SELECT * FROM [MA_TABLE]" Set RS = server.createobject("ADODB.Recordset") RS.Open SQL,Conn , 3, 3%> <form name="myform" method="post" action="<%=URL%> "> <select name="liste"> <%while not RS.eof%> <option><%=RS("champ")%> </option> <% RS.moveNext wend %> </select> <input type="Submit" value="Envoyer"> </form><% conn.close : Set conn=nothing %>
listederoul_1.php
<? $URL = $PHP_SELF;include("_connexion.php") ; ?> <? // au réaffichage, on récupère la sélection if($liste) { // traîtement éventuel, // redirection, etc ... } ?> <? $table="ma_table"; $query = "SELECT * FROM $table"; $result = mysql_query($query); ?> <form name="myform" method="post" action="<? echo $URL; ?> "> <select name="liste"> <? while ($val = mysql_fetch_array($result)) { ?> <option><? echo $val["champ"]; ?> </option> <? } ?> </select> <input type="Submit" value="Envoyer"> </form><? mysql_close(); ?>
Comment réafficher la liste au même item que la sélection précédente ? Lors de la construction de la liste, on teste si l'item est égal au paramètre et si oui, on utilise SELECTED !
listederoul_2.asp
<%URL = _ request.serverVariables("SCRIPT_NAME")%> <!-- #include file="_connexion.asp"--> <%SQL="SELECT * FROM [MA_TABLE]" Set RS = server.createobject("ADODB.Recordset") RS.Open SQL,Conn , 3, 3%> <form name="myform" method="post" action="<%=URL%> "> <select name="liste"> <%while not RS.eof%> <option <%if RS("champ") = request.form("liste") then%> SELECTED <%end if%> ><%=RS("champ")%> </option> <% RS.moveNext wend %> </select> <input type="Submit" value="Envoyer"> </form><% conn.close : Set conn=nothing %>
listederoul_2.php
<? $URL = $PHP_SELF;include("_connexion.php") ; ?> <? $table="ma_table"; $query = "SELECT * FROM $table"; $result = mysql_query($query); ?> <form name="myform" method="post" action="<? echo $URL; ?> "> <select name="liste"> <? while ($val = mysql_fetch_array($result)) { ?> <option <? if($liste==$val["champ"]) { ?> SELECTED <? } ?> ><? echo $val["champ"]; ?> </option> <? } ?> </select> <input type="Submit" value="Envoyer"> </form><? mysql_close(); ?>
Didier le
08/05/2003
(295 596 hits)