Il faut tout d'abord considérer 2 cas :
- les cases à cocher avec valeur : attribut value renseigné dans l'élément checkbox .
- les cases à cocher sans valeur : attribut value non présent dans l'élément checkbox.
Les cases à cocher se récupèrent ensuite de la même manière que n'importe quel autre champ de formulaire. Tout dépend de la méthode (attribut method) que vous spécifiez dans la balise form.
Si vous avez employé la méthode GET, les données transmises seront disponibles dans la collection QueryString de l'objet Request. Si par contre vous avez employé la méthode POST, elles le seront dans la collection Form de l'objet Request.
Un détail important : seules les checkbox qui ont été cochées apparaitront dans la collection spécifiée. La valeur que vous allez récupérer sera :
- la valeur (chaine de caractères) de l'attribut value si celui-ci est renseigné dans le formulaire.
- la chaine de caractères "on" si l'attribut value n'est pas présent dans l'élément checkbox.
Dans le cas d'un groupe de cases à cocher (même valeur pour l'attribut name), deux possibilités s'offrent à vous pour récupérer la valeur de chaque case qui a été cochée :
- d'une façon globale.
- en utilisant la propriété Count de la collection spécifiée et en parcourant la collection. Voyons cela sur un exemple simple (les exemples suivants utilisent la méthode POST).
Tout d'abord le formulaire <form method="post" action="checkboxrecup.asp">
choix1 <input type="checkbox" name="choix" value="val1"><br>
choix2 <input type="checkbox" name="choix" value="val2"><br>
choix3 <input type="checkbox" name="choix" value="val3"><br>
choix4 <input type="checkbox" name="choix" value="val4"><br>
<br>
<input type="submit">
</form> |
Admettons que l'on coche choix1, choix2 et choix4.
- De façon globale, nous procéderons ainsi <%
choix_recup_vals = Request.Form("choix")
Response.Write "choix effectués : " & choix_recup_vals
%> |
Ce qui produira la sortie suivante sur l'écran choix effectués : val1, val2, val4 |
- En parcourant la collection <%
for i = 1 to Request.Form("choix").Count
Response.Write "élément n°" & i & " = " & Request.Form("choix")(i) & "<br>"
next
%> |
Ce qui produira la sortie suivante sur l'écran élément n°1 = val1
élément n°2 = val2
élément n°3 = val4 |
Remarque : vous noterez que l'index de la valeur (élément i) n'a aucun rapport avec l'emplacement des contrôles dans le code HTML initial. De plus, l'indicage commence à 1 et non à 0. Vous pouvez également procéder d'une autre façon, en utilisant la structure de contrôle For Each
<%
for each checkbox_value in Request.Form("choix")
Response.Write checkbox_value & "<br>"
next
%> |
|