Formulaires

La façon plus répandue pour recueillir des informations de la part de l'utilisateur est de leur proposer un formulaire de saisie, comportant un ensemble de champ de saisie (texte, listes déroulantes, cases à cocher,...) ainsi qu'un bouton de type "submit" permettant d'envoyer les informations au serveur. Celui-ci lui répondra en lui retournant la page indiquée par l'attribut "action".

Un premier exemple simple est fourni par le code suivant (Affichage de la page) :

<html>

<head>

<title>Formulaire</title>

</head>

<body>

<form action="reponse.asp" method="POST">

<p>Nom : <input NAME="Nom" size="10"></p>
<p>Prenom : <input NAME="Prenom" size="10"></p>
<p><input type="submit" value="Envoyer" name="B1"></p>
</form>
</form>

</body>

</html>

La feuille de réponse suivante se contente d'afficher les données reçues (Affichage de la page) :

<html>

<head>

<title>Réponse au formulaire</title>

</head>

<%Nom=request.Form("Nom")

Prenom=request.Form("Prenom")%>

<body>

<p>Vous etes <%=Prenom%> <%=Nom%></p>

</body>

</html>

Voici un deuxième exemple avec un menu déroulant, un bouton envoyer et un bouton effacer (Affichage de la page) :

<html>

<head>

<title>Formulaire 2</title>

</head>

<body>

<form method="POST" action="reponse_menu_deroulant.asp">

<p>Voici le menu </p>

<select name="Menu1" size="1">

<option selected value="1">1</option>

<option value="2">2</option>

<option value="3">3</option>

<option value="4">4</option></select>

<p>

<input type="submit" value="Envoyer" name="Envoyer">

<input type="reset"  value="Effacer" name="Effacer">

</p>

</form>

</body>

</html>

Avec comme réponse (Affichage de la page) :

<html>

<head>

<title>Réponse au formulaire 2.asp</title>

</head>

<body>      

<% choix1 = request.form("Menu1")

   response.write ("Chiffre "&choix1&" sélectionné")

%>

</body>

</html>

Remarque: les 2 lignes suivantes ont exactement la même signification.

   response.write ("Chiffre "&choix1&" sélectionné")

   Chiffre <%=choix1%> sélectionné

Validation des champs d'un formulaire

Comme d'habitude, un problème de base est celui de la validation des données saisies par l'utilisateur dans le formulaire.
L'exemple qui suit propose une solution côté serveur pour s'assurer que tous les champs d'un formulaire sont remplis (Affichage de la page) :

<%ENVOY = Left(UCase(Request("ENVOYER")),5)

if ENVOY = "ENVOY" Then

 for each item in request.form

  if request.form(item) = "" then

   alert = "Tous les champs doivent avoir une réponse valide"

  end if

 next

 if alert = "" then

  alert = "Tous les champs sont remplis"

 end if

end if%>

<html>

<head>

<title>Validation des champs d'un formulaire</title>

</head>

<body<%if alert <> "" then%> onload="alert('<%response.write (alert)%>')" <%end if%>>

<form method="post" action="validation.asp" name="Validation">

<p>Nom    <input type="text" name="Nom"    size="20"></p>

<p>Prénom <input type="text" name="Prenom" size="20"></p>

<p>

<input type="submit" name="ENVOYER" value="Envoyer">

<input type="reset"  name="EFFACER" value="Effacer">

</p>

</form>

</body>

</html>

Ce type de code permet de rajouter un champ sans avoir à modifier le code de test de validité des champs. Il présente toutefois l'inconvénient de demander un aller retour vers les serveur et donc de générer un trafic réseau qui n'est pas forcément indispensable.

Une approche de plus en plus répandue consiste à réaliser ce traitement côté client à l'aide d'un script JavaScript. La plupart des outils de développement générent ces scripts de façon automatique (ce qui n'est pas vraiment très difficile !)