Série de conférences ASP (15) Utilisation de formulaires HTML
Auteur:Eve Cole
Date de mise à jour:2009-05-30 19:58:48
À l’aide de l’objet ASP Request, vous pouvez créer un script simple mais puissant pour collecter et traiter les données des tableaux HTML. Dans cette rubrique, vous apprendrez non seulement à créer un script de traitement de table de base, mais vous découvrirez également des techniques utiles pour valider les informations de table sur le serveur Web et le navigateur de l'utilisateur.
À propos des tableaux HTML
Les tableaux HTML, la méthode la plus courante de collecte d'informations Web, sont des arrangements spéciaux de balises HTML qui fournissent des contrôles d'interface utilisateur sur une page Web. Les zones de texte, les boutons et les cases à cocher sont des contrôles classiques qui permettent aux utilisateurs d'interagir avec les pages Web et de soumettre des informations au serveur Web.
L'exemple HTML suivant génère un formulaire dans lequel l'utilisateur peut saisir son nom, son âge et contient un bouton qui soumet ces informations au serveur Web. Le formulaire contient également un contrôle implicite (non affiché par le navigateur Web) qui peut être utilisé pour transmettre des informations supplémentaires au navigateur Web.
<FORM METHOD="POST" ACTION="monfichier.asp">
<INPUT TYPE="texte" NAME="prénom">
<INPUT TYPE="texte" NAME="nom">
<INPUT TYPE="texte" NOM="âge">
<INPUT TYPE="hidden" NAME="userstatus" VALUE= "new">
<INPUT TYPE="soumettre" VALUE="Entrée">
</FORM>
Formulaires qui gèrent l'entrée ASP Lorsque le formulaire soumet des informations au serveur Web, le navigateur Web de l'utilisateur demande le fichier .asp spécifié avec l'attribut ACTION de la balise HTML <FORM> (dans l'exemple précédent, le fichier s'appelait Myfile.asp ) . Les fichiers .asp contiennent des scripts qui manipulent les valeurs des tables, comme l'affichage d'une table de résultats ou l'interrogation d'informations dans une base de données.
Il existe trois façons de collecter les valeurs des tableaux HTML à l'aide de fichiers .asp
Le fichier statique .htm peut contenir un tableau dont les valeurs sont envoyées au fichier .asp.
Un fichier .asp peut créer un formulaire qui envoie ses informations par courrier électronique à un autre fichier .asp.
Le fichier .asp peut créer un formulaire qui envoie ses informations à lui-même, le fichier qui contient le formulaire.
Les deux premières méthodes fonctionnent de la même manière et, lorsque le formulaire interagit avec le programme de passerelle autre qu'ASP, il peut inclure des commandes pour lire et répondre aux sélections de l'utilisateur.
La création d'un fichier .asp contenant une définition de table et s'envoyant des informations est une manière plus complexe, mais plus puissante, de travailler avec des tables. Ce processus est illustré dans Validation des entrées de formulaire.
Obtenir la saisie du formulaire
L'objet ASP Request fournit deux collections qui simplifient considérablement la tâche de récupération des informations de formulaire jointes à une requête URL.
Collection QueryString
La collection QueryString obtient la valeur transmise au serveur Web sous forme de texte qui suit le point d'interrogation dans l'URL demandée. Les valeurs du tableau peuvent être ajoutées à l'URL demandée en utilisant la méthode HTTP GET ou en ajoutant manuellement les valeurs du tableau à l'URL.
Par exemple, si l'exemple de tableau précédent utilisait la méthode GET (ACTION = "GET") et que l'utilisateur tapait Jeff, Smith et 30, la requête URL suivante serait envoyée au serveur :
http://scripts/Myfile.asp?firstname=Jeff&lastname=Smith&age=30&userstatus=new
Myfile.asp contient le script de traitement de table suivant :
Bonjour, <%= Request.QueryString("firstname") %> <%= Request.QueryString("lastname") %>.
Vous avez <%= Request.QueryString("age") %> ans.
<%
Si Request.QueryString("userstatus") = "nouvel utilisateur" alors
Réponse.Écrivez « C'est votre première visite sur ce site Web ! »
Terminer si
%>
Dans ce cas, le serveur Web renverra le texte suivant au navigateur Web de l'utilisateur :
Bonjour, Jeff Smith. Vous avez 30 ans. C'est votre première visite sur ce site Web !
La collection QueryString possède un paramètre facultatif qui peut être utilisé pour accéder à l'une des multiples valeurs apparaissant dans le corps de la demande. Vous pouvez également utiliser la propriété Count pour compter le nombre d'occurrences d'un type particulier de valeur.
Par exemple, un formulaire contenant une listbox multi-éléments pourrait soumettre la requête suivante :
http://list.asp?food=apples&food=olives&food=bread
Vous pouvez également utiliser la commande suivante pour compter plusieurs valeurs :
Request.QueryString("nourriture").Count
Si vous souhaitez afficher plusieurs types de valeurs, List.asp doit contenir le script suivant :
<%Total = Request.QueryString("food").Count%>
<%Pour i = 1 à Total%>
<%= Request.QueryString("food") (i) %> <BR>
<%Suivant%>
Le script ci-dessus affichera :
pommes
olives
pain
Collection de formulaires Lorsque vous utilisez la méthode HTTP GET pour transmettre des valeurs de formulaire longues et complexes au serveur Web, des informations peuvent être perdues. La plupart des serveurs Web ont tendance à contrôler étroitement la longueur des chaînes de requête d'URL afin que les valeurs de table longues transmises à l'aide de la méthode GET soient tronquées. Si vous devez envoyer de grandes quantités d'informations d'un formulaire vers un serveur Web, vous devez utiliser la méthode HTTP POST. Cette méthode est utilisée pour envoyer des données de table dans le corps de la requête HTTP, et le nombre de caractères envoyés peut être illimité. Vous pouvez également utiliser la collection Form de l'objet ASP Request pour récupérer les valeurs envoyées à l'aide de la méthode POST.
La collection Form stocke les valeurs numériques de la même manière que la collection QueryString. Par exemple, si un utilisateur remplit une table avec une longue liste de noms, vous pouvez récupérer ces noms avec le script suivant :
<% Pour i = 1 à Request.Form.Count %>
<% =Request.Form("noms") (i) %>
<% Suivant %>
Validation des entrées de formulaire Un bon script de traitement de formulaire doit vérifier que les informations saisies dans le formulaire sont valides avant de traiter les données. Les scripts de validation peuvent vérifier que le type d'informations que les utilisateurs saisissent dans un formulaire est correct. Par exemple, si votre site Web contient un formulaire permettant aux utilisateurs de calculer des informations financières, avant de traiter les résultats, vous devez vérifier que l'utilisateur a bien saisi des informations numériques et non du texte.
Un moyen très pratique de valider la saisie d’un formulaire consiste à créer un formulaire qui se transmet les informations. Dans ce cas, le fichier .asp contient un tableau à partir duquel les informations peuvent être obtenues. Par exemple, le script suivant vérifie que l'utilisateur a saisi une valeur dans le champ de la table « âge » en se transmettant les informations :
<% If Isnumeric(Request.QueryString("Age")) then %>
<p>Bonjour, votre âge est <%=Request.QueryString("age")%>
<%Else%>
<p>Veuillez saisir un âge numérique.
<%Fin Si %>
<FORM METHOD= "POST" ACTION="verify.asp" >
Nom : <INPUT TYPE="texte" NAME="Nom" >
Âge : <INPUT TYPE="text" NAME="Âge" >
<INPUT TYPE="soumettre" VALUE="Entrée">
</FORM>
Dans cet exemple, le script se trouve également dans le même fichier Verify.asp qui contient la table. Le formulaire se transmet les informations en spécifiant Verify.asp dans l'attribut ACTION.
Vous pouvez également créer des scripts côté client pour vérifier que les utilisateurs ont saisi des informations valides. La validation des entrées utilisateur sur un navigateur Web peut réduire le trafic réseau vers le serveur Web, en plus de signaler plus rapidement aux utilisateurs les erreurs de saisie de formulaire. Le script suivant s'exécute sur le navigateur Web de l'utilisateur et vérifie les informations de l'utilisateur avant de les soumettre au serveur Web.
<SCRIPT LANGUAGE="VBScript">
<!--
Sous btnEnter_OnClick
DimLeForme
Définir TheForm = Document.MyForm
Si IsNumeric(TheForm.Age.Value) Alors
LeFormulaire.submit
Autre
Msgbox "Veuillez entrer un âge numérique."
Terminer si
Fin du sous-marin
//-->
</SCRIPT>
<FORM METHOD= "POST" NAME= MonFormulaire ACTION="monfichier.asp" >
Nom : <INPUT TYPE="texte" NAME="Nom" >
Âge : <INPUT TYPE="text" NAME="Âge" >
<INPUT TYPE="bouton" NAME="btnEnter" VALUE="Entrée">
</FORM>