Sélections multiples |
Sélections multiples et Base de Données |
|
Télécharger l'article au format PDF
1. Sélections multiples pour sortir plusieurs champs d'une BD
Avant de commencer :
L'option "multiple" de la balise <SELECT> permet à l'utilisateur de pouvoir sélectionner plusieurs options dans la liste.
La commande qui va nous servir en ASP : Request.Form.Item(x) où x est le numéro du champ du formulaire que l'on va vouloir ressortir.
1ère page : On contruit une liste pour l'exemple, rien de plus simple :)
<% SQL = "SELECT Id,Nom FROM Marques" RS.Open SQL,Conn,1,3 %> <form name="form1" method="post" action="mmB.asp" target="B"> <table width="100%" border="0" cellspacing="5"> <tr> <td width="31%"> <!-- on n'oublie pas d'allouer la possibilité de sélections multiples ! --> <select name="marques" size="15" multiple> <% while not RS.EOF %> <option value="<%=RS("Id")%>"><%=RS("Nom")%></option> <% ' on ressort toutes les valeurs... RS.movenext() wend %> </select> <br> <input type="hidden" name="val" value="ok"> <!-- on vérifie si on valide le formulaire --> <input type="submit" name="Submit2" value=" Voir la sélection "> </td> <%RS.close %> </tr> </table> </form>
|
|
2ème page : On affiche les résultats
Quand on récupère des sélections multiples, les valeurs sont transmises à la page sous forme "marques=1&marques=2&marques=3&val=ok&submit=submit" ...
- item(1) récupère donc les valeurs du champs "marques", un seul champ mais qui est retransmis pour chaque valeurs lors de sélections multiples
- item(2) récupère donc la valeur du champs "val"
- item(3) récupère donc la valeur du champs "submit" , le bouton :)
<% If Request.form("val") = "ok" then %> Liste des modèles : <BR> <% SQL = "SELECT Nom FROM RMM where Id_Marques = " ' on construit la requête... For each item1 in Request.form.item(1) ' on boucle pour toutes les valeurs du champs "marques", donc les marques de voitures, ' item1 n'est qu'une variable, vous pouvez en changez le nom SQL = SQL & item1 & " OR Id_Marques = " ' à chaque passage, on ajoute une marque en plus dans la requête next SQL = left(SQL,len(SQL)-17) ' après le dernier passage, on vire le dernier " OR Id_Marques = ", ' on aurait pu s'en passer en faisant 2 boucles... RS.Open SQL,Conn,1,3 %> <select name="select2" size="10"> <% while not RS.EOF ' on ouvre et on affiche tous les résultats %> <option><%=RS("Nom")%></option> <% RS.movenext() wend %> </select> <%else ' si on n'a pas encore validé le formulaire %> Choisissez une marque dans la partie gauche ! <%end if %>
|
2. Sélections multiples pour enregistrer plusieurs champs
le principe reste le même, la commande aussi, on utilise toujours une boucle avec Request.form.item(x)
j'utilise ici une table contenant 3 champs : Id, Id_Marchands (relié à une table Marchands) et Id_Produits (relié à une table Produits), qui lie un ou plusieurs Marchands à un ou plusieurs Produits, il est ensuite facile de ressortir le nom des Marchands d'après le produit choisi ou autre
le script de l'exemple :
<% SQL = "SELECT * FROM PM" RS.Open SQL,Conn,1,3
For each item2 in Request.form.item(2) ' on prend le 1er marchand et ainsi de suite... For each item1 in Request.form.item(1) ' on boucle pour tous les produits RS.addnew RS("Id_Marchands") = item2 RS("Id_Produits") = item1 RS.update ' on ajoute les champs next next RS.close %>
|
Ludo le
03/01/2003 (47 938 hits) |
|
|