Le Langage VBScript

Ce langage peut être utilisé indépendamment d'ActiveX, de même que la technologie ActiveX peut être exploitée sans VBScript (cf. cours Access VBA chapitre 7).

Inclure le code VBScript dans une page HTML

VBS est un langage de type script, interprété par un navigateur (typiquement MSIE). Il est dérivé de VBA dont il reprend l'essentiel des instructions. Un programmeur connaissant ce langage sera en terrain familier. On débute un script VBS par une balise <SCRIPT> dans une page web. Cette balise admet un attribut LANGUAGE="langage" permettant de spécifier le type de langage utilisé. Pour VBScript, on indique "VBS". On indique le contenu du script dans la zone d'application de la balise <SCRIPT>. Voici comment on peut inclure un script dans une page web :

<HTML>
<HEAD>

<TITLE>Exemple de script VBS</TITLE> <SCRIPT LANGUAGE="VBS"> <!-- Function Siecle(UneDate) If IsDate(UneDate) Then Siecle = ((Year(UneDate) - 1) \ 100 + 1 Else Siecle = Null End If End Function --> </SCRIPT> </HEAD> <BODY>

Remarques:

<HTML><HEAD>
<SCRIPT LANGUAGE="VBScript">
Sub Bouton1_OnClick
 MsgBox "Nous sommes le " & Date &" Jusqu'à l'an 2000 il reste "_ 
        & DateDiff("d",Date,#1/1/2000#) & " jours" ,vbOKOnly + vbExclamation
 End Sub 
</SCRIPT> 
</HEAD>
. . .
<FORM><INPUT NAME="Bouton1" TYPE="BUTTON" VALUE="Cliquez ici"></FORM> 
. . .

 

Haut du document Trucs et Astuces MS-Access

Variables et types de données

On déclare une variable en la précédant du mot clé Dim. Cette instruction peut être suivie d'un ou plusieurs noms de variables, séparés par des virgules. Les noms de variables doivent respecter des règles classiques, que nous ne reproduirons pas ici.

En VBS, toutes les variables sont de type variant. On peut y affecter indifféremment n'importe quel type de donnée, que cela soit une chaîne de caractères ou une valeur numérique. On définit cependant des sous-types car une fois qu'une affectation a été effectuée, la variable concernée adopte le (sous-) type de donnée qu'elle reçoit. Les principaux sous-types sont les suivants :

Array

pour les tableaux,

Boolean

Valeur booléenne, contient Vrai ou Faux

Byte

Octet (8 bits),

Date

Time

Contient une date entre le 1.1.100 et le 31.12.9999

Contient l'heure

Double

Valeur numérique double précision,

Empty

Variant, valeur nulle (0 pour les types numériques et "" pour les chaînes),

Integer

Entier sur 16 bits,

Long

Entier sur 32 bits,

Null

Variant ne contient pas de données valides

Object

Objet de type ActiveX ou non,

String

Chaîne de caractères.

Bien que les variables n'aient pas de type spécifié dans leur déclaration, il n'est pas toujours possible de les utiliser dans une même expression (comme par exemple l'addition d'un entier à une chaîne). C'est pourquoi VBS possède des fonctions permettant de convertir un type de donnée à un autre. En voici quelques unes:

CBool(expression)

convertit en booléen une expression numérique,

CByte(expression)

convertit en octet une expression,

CDbl(expression)

Expression en double précision,

Cint(expression)

expression en entier,

CLng(expression)

expression en entier long,

Cstr(expression)

Expression en chaîne,

Str(valeur_numérique)

Valeur numérique en chaîne,

Val(chaîne) : chaîne

valeur numérique.

Il en existe d'autres que nous n'avons pas citées.

Autre type important: les tableaux. On définit un tableau en VBS, toujours à l'aide de la commande Dim, mais en indiquant un entier entre parenthèses après le nom de celui-ci.

Exemple : Dim Tableau(10)

définit un tableau de..11 éléments. En effet, bien que le 1er indice soit 0, on n'indique pas en argument la taille du tableau mais le numéro du dernier élément (soit la taille du tableau - 1).

A noter que VBS propose une extension intéressante des tableaux : les tableaux dynamiques; ils sont définis en n'indiquant pas de taille en argument (parenthèses vides). Pour utiliser de tels tableaux, on doit cependant indiquer leur nombre d'éléments, comme pour un tableau statique, mais en utilisant cette fois le mot clé ReDim. On peut ainsi spécifier plusieurs fois le mot clé ReDim en augmentant la taille du tableau à chaque fois.

Constantes

Comme en VBA les constantes numériques, chaînes de caractères et dates sont définies en utilisant l'instruction Const.

Exemples:

Const conDistance = 300

Const conTxtStock = "cet article est indisponible pour le moment "

Const conDateLimite = #31-12-1999#

En mettant les noms des constantes en majuscules, on évite la confusion avec des variables.

Opérateurs

Les opérateurs disponibles en VBS sont ceux rencontrés dans les langages de programmation classiques, avec cependant quelques différences par rapport aux langages comme le C ou Java, mais qui restent absolument conformes à ce que l'on rencontre dans le VBA et le Visual Basic.

Par exemple, l'opérateur d'affectation et celui d'égalité sont les mêmes : "=". De plus, l'opérateur de différence est "<>". D'autre part, les opérateurs logiques s'expriment en toutes lettres, comme par exemple : And, Or, etc. Enfin, on concatène deux chaînes de caractères en utilisant l'opérateur &.

L'ordre de priorité de l'exécution des opérations est identique à celui des autres langages.

 

Haut du document Trucs et Astuces MS-Access

Boucles et structures conditionnelles

Listons rapidement les différentes structures conditionnelles et les boucles utilisables en VBS.

If condition Then
' instructions
Else
' instructions
End If

Comme dans tous les langages, le Else est facultatif. Si on a plusieurs conditions différentes à tester on utilise la clause ElseIf.

Quand la condition doit être testée de plusieurs manières on utilisera avantageusement:

Select Case expression-textée
[Case liste-d'expressionlist-n
[bloc-d'instructions-n]] . . .
[Case Else
[bloc-d'instructions-n]]
End Select

Exemple:

Dim Couleur, MaVar
Sub ChangeCouleurFond (Color)
MaVar = lcase (Couleur)
   Select Case MaVar
       Case "rouge"    document.bgColor = "rouge"
       Case "vert"  document.bgColor = "vert"
       Case "bleu"   document.bgColor = "bleu"
       Case Else     MsgBox "choisissez rouge ou vert ou bleu"
   End Select
End Sub

Concernant les répétitives, il en existe plusieurs comme en VBA :

Do While condition
' instructions
Loop
Do
' instructions Loop While condition
Do Until condition ' instructions Loop

Suivant le cas, la condition est exécutée au début ou à la fin de la boucle. D'autre part, on peut sortir d'une boucle en utilisant l'instruction Exit Do.

Quand on connaît le nombre d'itérations, on utilise la boucle "For" :

For compteur = valeur_début To valeur_fin
' instructions pouvant utiliser la valeur de la variable "compteur"
Next

Notez qu'il existe également une instruction Exit For permettant de sortir d'une boucle For.

Si on doit traiter chaque élément d'une collection d'objets, on utilise de préférence For Each . . . Next

Par exemple on va placer le contenu d'un objet Dictionary (tableau de stockage) dans plusieurs zones de texte:


<HEAD><TITLE>Elements d'une collection</TITLE></HEAD> 
<SCRIPT LANGUAGE="VBScript"> 
<!--
Sub cmdChanger_OnClick
Dim d 
Set d = CreateObject("Scripting.Dictionary") 
' On ajoute des clés et du texte
d.Add "0", "Paris"
d.Add "1", "Bordeaux" 
d.Add "2", "Lyon" 
For Each I in d 
Document.frmGeo.Elements(I).Value = d.Item(I) 
Next 
End Sub 
--> 
</SCRIPT> 
<BODY> 
<CENTER> 
<FORM NAME="frmGeo" 
<Input Type = "Text"><p> 
<Input Type = "Text"><p> 
<Input Type = "Text"><p> 
<Input Type = "Text"><p> 
<Input Type = "Button" NAME="cmdChanger" VALUE="Cliquez ici"><p> 
</FORM> </CENTER> </BODY> 

Haut du document Trucs et Astuces MS-Access

Procédures et Fonctions

Contrairement aux langages comme le C ou Java, on distingue en VBS deux types de modules: les procédures et les fonctions.

Une procédure est un petit programme qui ne renvoie aucune valeur. Elle peut recevoir des arguments séparés par des virgules (variables, expressions, constantes) passées par une procédure appelante. Si elle n'a pas d'arguments à traiter on doit faire suivre son nom d'une paire de parenthèses.

Exemple:

Sub ConvertTemp()
' La valeur est calculée par la fonction Celsius.
temp = InputBox("Entrez la température en degrés F.", 1)
MsgBox "La température est " & Celsius(temp) & " degrés C." 
End Sub

Une fonction est définie par les mots clés Function et End. Elle retourne toujours une valeur de type Variant en assigant celle-ci à son nom.

Exemple:

Function Celsius(DegrésF) 
Celsius = (DegrésF - 32) * 5 / 9 
End Function

Dans cet exemple, une variable nommée DegrésF contenant la valeur de l'argument, est passée à la fonction qui le traite. On constate qu'il n'existe pas d'instruction du type return. En effet, pour renvoyer une valeur au programme appelant, on affecte tout simplement cette valeur à une variable portant le nom de la fonction. Le résultat est donc retourné à la procédure appelante et affiché dans une boîte de message.

Rappelons qu'il est vivement conseillé de mettre les procédures et fonctions d'un programme dans l'en-tête du document HTML qui le contient.

Haut du document Trucs et Astuces MS-Access

Applications

VBS a deux applications principales :

Nous verrons comment utiliser VBS avec ActiveX dans un autre cours. Voici un petit exemple de vérification d'une rubrique d'un formulaire intégré dans une page HTML:

<HTML> <HEAD> <BODY BGCOLOR="#fffff0"> <SCRIPT LANGUAGE="VBScript"> <!-- Sub Verif_OnClick Dim f Set f = Document.frmSaisie If f.Nombre.Value < 1 Or f.Nombre.Value > 99 Then MsgBox "Entrez un nombre entre 1 et 99 !" Else MsgBox "Saisie Ok !" End If End Sub --> </SCRIPT> </HEAD> <BODY> <H1>Formulaire</H1> <BR> <FORM NAME="frmSaisie"> Entrez un nombre entre 1 et 99 : <INPUT NAME="Nombre" TYPE="TEXT" SIZE="2"> <INPUT NAME="Verif" TYPE="BUTTON" VALUE="Valider"> </FORM> </BODY> </HTML>

Cet exemple crée un formulaire HTML comprenant une zone de saisie et un bouton de commande. On vérifie les données saisies dans la zone prévue à cet effet lorsque l'usager clique sur le bouton, en appelant une procédure portant le nom Verif_OnClick. Notons que le nom de cette procédure est le nom du bouton (Verif) suivi de "_OnClick" indiquant que la procédure est appelée quand l'utilisateur clique sur le bouton en question. Dans ce cas l'appel de la procédure Verif_OnClick est implicite. Plus avant nous verrons qu'il y a trois méthodes pour appeler une procédure associée à une page Web.

Pour visualiser ce formulaire et tester cliquez ici.

Analysons le contenu de cette procédure. D'abord, on définit une variable f à laquelle on attribue une référence vers le formulaire contenu dans la page HTML, via l'instruction Set. Le nom de celui-ci est Document.frmSaisie, "Document" désignant le document courant, tandis que "frmSaisie" est le nom que nous avons donné au formulaire dans la balise <FORM>. Notez l'importance de l'opérateur ".". Il sépare les noms de différents objets apparaissant dans une page HTML. On l'utilise également pour faire référence à une propriété d'un contrôle ActiveX, comme nous le verrons plus loin.

L'instruction Set référence la variable f pour simplifier la vérification de la zone de saisie du formulaire. Autrement il faudrait écrire: Document.frmSaisie.Nombre.Value chaque fois que l'on veut traiter le contenu de la zone de saisie.

Ensuite on teste la valeur de la rubrique Nombre du formulaire précité, en accédant à sa propriété Value. Si cette valeur est incorrecte, on affiche un message d'erreur. Si elle est correcte, on l'indique aussi à l'utilisateur pour le sécuriser.

 

Les trois méthodes d'appel d'une procédure de page Web

On peut appeler une procédure de manière explicite, implicite depuis la balise <FORM> du langage HTML, ou encore avec la commande FOR ... EVENT du langage VBScript.

Exemples:

<HTML>

<BODY BGCOLOR="#fffff0"> <H1> Exemples d'appels de procédures VBScript</H1> <SCRIPT LANGUAGE = "VBScript"> Sub Explicite alert "Ce script a été appelé de manière explicite." End Sub Sub boutonImplicite_onClick msgbox "Ce script a été appelé de manière implicite." End Sub </SCRIPT> <FORM METHOD="POST"> <INPUT TYPE="Button" NAME="boutonExplicite" VALUE="Methode 1: Appel explicite de la procédure VBScript" onClick="Explicite"> <P> <INPUT TYPE="Button" NAME="boutonImplicite" VALUE="Methode 2: Appel implicite de la procédure VBScrip"> <P> <INPUT TYPE="Button" NAME="boutonScriptFor" VALUE="Methode 3: Scripting avec la syntaxe FOR...EVENT"> <SCRIPT FOR="boutonScriptFor" EVENT="onClick" LANGUAGE="VBScript"> Alert "Ce script est incorporé au contrôle." </SCRIPT> </FORM> </BODY> </HTML>

Pour visualiser ce formulaire et tester cliquez ici.

Cette page comporte trois boutons de commande, chacun utilisant une technique d'appel de procédure VBScript différente.

Le premier bloc SCRIPT inclut deux procédures. La seconde a le mot réservé onClick à la fin du nom comme dans l'exemple précédent. Nous avons ici un appel implicite de la procédure boutonImplicite_onClick, car il n'y a pas d'appel explicite de cette procédure dans la définition du "boutonImplicite" de la balise <FORM>..La première partie du nom de la procédure l'associe au contrôle et la seconde à un événement.

Le premier bouton de commande "boutonExplicite" appelle une procédure de manière explicite en associant le nom de la procédure à un événement dans sa définition.

Le dernier bouton "boutonScriptFor" utilise une syntaxe spéciale qui nous permet de dédier un bloc SCRIPT à un événement de contrôle.

Quelle est la meilleure méthode ?

La méthode de l'appel implicite facilite la lecture du code et par suite son entretien.

La méthode Script For - Event est utile si le bloc ne fait qu'appeler un programme externe ou permet de naviguer vers un autre document HTML.

Nous allons maintenant étudier un exemple de génération automatique de valeur et de vérification de la saisie de données obligatoires.

<HTML><HEAD>
<TITLE>Validation dans formulaire avec VBScript</TITLE>

<SCRIPT LANGUAGE="VBScript">
Dim vbCrLf
vbCrLf = Chr(10) & Chr(13)
Function isNull (str) 
   If (str.Value="") Then
     isNull = True
   Else
     isNull = False
   End If
End Function

'Fonction pour vérifier la saisie de la rubrique obligatoire:
Function checkCodeUsager(str) 
   If (isNull(str)) Then
      alert "Vous devez entrer le Code Usager"
      checkCodeUsager = False
      Exit Function
   Else
      checkCodeUsager = True
   End If
End Function

'Section des procédures événementielles:

Sub Page_Initialize
      Document.frmCommandes.txtQuantity.Value = 1000
      Document.frmCommandes.txtCodeUsager.SetFocus
End Sub

Sub btnCommandez_Click
   msgbox "Pour confirmer votre commande: " & vbCrLf & "Nom: " &_ 
   Document.frmCommandes.txtNom.Value & vbCrLf & "Quantité commandée: " &_ 
   Document.frmCommandes.txtQuantity.Value 
End Sub

</SCRIPT>
</HEAD>
<BODY LANGUAGE="VBScript" BGCOLOR="#fffff0" OnLoad = Page_Initialize>

<CENTER><H1> Network Computing International </H1>
<H2>Exemple de Validation avec VBScript</H2></CENTER>
Bienvenue &agrave; notre syst&egrave;me de commandes par Internet. Notez que les rubriques "Code Usager" 
et "Quantit&eacute;" sont requises pour un traitement correct de votre commande. 

<FORM NAME = "frmCommandes" METHOD = "Post">
<PRE>
CodeUsager:      <INPUT TYPE="TEXT" NAME="txtCodeUsager" VALUE="" onBlur="checkCodeUsager(txtCodeUsager)">
Votre Nom:       <INPUT TYPE="TEXT" NAME="txtNom">
Votre Adresse:   <INPUT TYPE="TEXT" NAME="txtAdresse">
Quantit&eacute;:        <INPUT TYPE="TEXT" NAME="txtQuantity" Value="" >
</PRE>
<INPUT TYPE="Button" VALUE="Commandez" Name ="btnCommandez" Onclick="btnCommandez_Click"> 
<INPUT TYPE="reset" VALUE="Initialisez Formulaire">
</FORM>
</P></BODY></HTML>

Dans la balise BODY on appelle une procédure pour agir sur un document ouvert et initialiser une rubrique à une valeur par défaut. Ici on utilise l'événement onBlur (analogue à LostFocus) pour valider au niveau de la machine Client. La fonction isNull est utilisée pour s'assurer que l'usager entre une valeur non nulle.

Pour visualiser ce formulaire et tester cliquez ici.

Haut du document Trucs et Astuces MS-Access

Création de formulaires interactifs

Pour compléter les exemples précédents on va expliquer plus en détail comment créer des formulaires interactifs dans vos pages Internet via VBS. De tels formulaires permettent aux visiteurs de recevoir et de fournir des informations.

On va d'abord étudier la balise <FORM>, qui constitue la pierre angulaire des formulaires interactifs. Ensuite nous étudierons 8 différents types de rubriques que vous pouvez incorporer dans vos formulaires, soit les zones de texte, cases à cocher, boutons radio, zones de liste, étiquettes, zones invisibles, mots de passe et zones de chargement de fichiers.

Puis nous examinerons comment utiliser les boutons Envoyer, Image et Actualiser. Ensuite nous verrons comment créer des boutons de formulaire génériques.

Finalement, nous verrons comment traiter les informations obtenues via vos formulaires.

La balise FORM
Tous les formulaires HTML sont créés avec la balise <FORM>

<form method="xxxx" action="xxxx">

(ici on placera les contrôles de formulaire)

</form>

L'attribut method définit comment l'information saisie par l'usager au moyen du formulaire est envoyée au serveur. On a deux options:

GET

Envoie les données du formulaire en qualité d'élément de l'adresse URL (par exemple script.cgi?name=Laurent&email=Laurent@Laurent.com). C'est l'option par défaut. Elle est efficace pour de petites quantités de données (moins de 1024 octets), par exemple lancer une requête de recherche.

POST

Envoie les données du formulaire dans le flux HTTP. Ceci est recommendé pour la plupart des types de formulaires(questionnaires,catalogues). Contrairement à la méthode GET, l'usager ne peut pas actualiser la page de résultats - habituellement, l'usager obtient une boîte de dialogue lui demandant s'il veut envoyer les données une nouvelle fois


L'attribut action spécifie la destination des données. Normalement c'est l'adresse URL d'un script sur le serveur. Par exemple, http://www.votresite.com/cgi-bin/feedback.cgi ou http://www.votresite.com/poll.asp.


Contrôles de formulaire
Il est temps de mettre quelques contrôles dans le formulaire. Les contrôles de formulaire incluent les zones de texte, les cases à cocher, les boutons radio, et les listes déroulantes. Chaque contrôle de formulaire a un nom et une valeur. Le nom est utilisé par le script côté serveur ou un autre programme pour identifier la rubrique, et la valeur représente la saisie de l'usager.

Nous allons examiner les divers types de contrôles disponibles.

Zones de texte
Ce contrôle permet d'entrer de petites quantités d'informations telles que le nom de l'usager et son adresse email. Le format de la balise est le suivant:

<input type="text" name="xxxx" value="xxxx"
size="xxxx" maxlength="xxxx">


L'attribut name est le nom du contrôle(par exemple, adresse_email ou age). L'attribut optionnelvalue permet de fournir une valeur par défaut, qui apparait dans la zone de texte (l'usager peut changer cete valeur).

L'attribut optionnel size spécifie la taille physique de la zone de texte en caractères. Par défaut on aura la taille par défault utilisée par le navigateur.

Finalement, l'attribut optionnel maxlength permet de limiter le nombre de signes que l'usager peut entrer au clavier. Par défaut, l'usager peut entrer un nombre illimité de signes.

Exemple:
<form>
Adresse Email: <input type="text" name="adresse_email" value="" size="30" maxlength="50">
<form>

Adresse Email:


Cases à cocher

Les cases à cocher sont des rubriques de type booléen pouvant être activées/désactivées par un clic de souris, Leur valeur sera soit Vrai (True), soit Faux (False).

Ce type de contrôle permet à l'usager de spécifier un seul élément de donnée, par exemple, s'il veut ou non recevoir votre magazine, ou pour indiquer qu'il a lu vos conditions d'abonnement.

Le format de la balise est le suivant:

<input type="checkbox" name="xxxx" value="xxxx" checked>

L'attribut name est le nom de la rubrique (par exemple, magazine). On peut spécifier plusieurs cases à cocher avec le même nom. Dans ce cas, elles vont appartenir au même groupe d'options. Quand le formulaire est transmis, les valeurs de toutes les cases à cocher sont transmises sous le même nom.

L'attribut value spécifie la valeur qui sera tranmise si l'usager coche la case. Si l'usager désactive la case, une valeur null est transmise.

L'attribut optionnel checked, si présent, affichera la case à cocher comme étant activée. Si l'attribut checked est omis dans la balise, la case à cocher sera affichée comme étant vide.

Exemple:
Voulez-vous vous inscrire dans notre liste d'adresses?
<form>
<input type="checkbox" name="liste_mailing" value="oui" checked> Oui
</form>

Voulez-vous vous inscrire dans notre liste d'adresses? Oui


Boutons radio
Les boutons radio sont similaires aux cases à cocher, sauf qu'un seul bouton peut être sélectionné dans un groupe. (Comme avec les cases à cocher, un groupe de boutons radio est une collection portant le même nom.)

Les boutons radio permettent à l'usager d'effectuer un choix parmi quelques options. (Si vous avez beaucoup d'options, il faut considérer l'emploi d'une liste.) La balise du bouton radio a les mêmes attributs que celle de la case à cocher:

<input type="radio" name="xxxx" value="xxxx" checked>

L'attribut name est le nom de la rubrique (par exemple, couleur_préférée). Vous pouvez spécifier plusieurs boutons radio avec le même nom. Dans ce cas ils font partie du même groupe d'options. Un seul bouton peut être choisi à un instant donné.

L'attribut value indique la valeur qui sera transmise si l'usager choisi ce bouton radio.

L'attribut checked, si présent, affichera le bouton comme étant activé. Par défaut, il est affiché comme étant désactivé.

Exemple:
Quelle est votre couleur préférée?
<form>
<input type="radio" name="couleur_préférée" value="rouge" checked> Rouge
<input type="radio" name="couleur_préférée" value="orange"> Orange
<input type="radio" name="couleur_préférée" value="bleu"> Bleu
</form>


Quelle est votre couleur préférée? Rouge Orange Bleu


Listes déroulantes
Les listes déroulantes autorisent la sélection de un ou de plusieurs éléments d'une liste d'options. La balise a le format suivant:

<select>
<select name="xxxx" size="xxxx" multiple>
<option value="xxxx" selected>Option Text</option>
<option value="xxxx">Option Text</option>
</select>


La balise <select></select>définit la liste déroulante. L'attribut name donne le nom de la liste (par exemple, sport_favori).

L'attribut optionnel size spécifie le nombre d'éléments qui seront affichés à la fois. Si omis ou fixé à 1, on affiche une liste déroulante.

L'attribut optionnel multiple, si présent, va autoriser l'usager à sélectionner plusieurs options via la touche Ctrl ou Maj.

A l'intérieur de la balise, <select></select> une ou plusieurs balises <option>sont placées. Chaque balise <option> représente un élément de la liste.
L'attribut value est la valeur qui va être transmise si l'usager choisit cette option.
L'attribut optionnel selected va présélectionner cette option quand le formulaire est affiché.

Entre chaque balise <option></option> on peut placer l'étiquette de texte Le texte de l'étiquette n'est pas transmis, il ne sert qu'à guider l'usager.

Exemple 1: Liste déroulante

Quel est votre sport favori?
<form>
<select name="sport_favori" size="1">
<option value="tous" selected>J'aime tous les sports!</option>
<option value="judo">Judo</option>
<option value="football">Football</option>
<option value="basketball">Basketball</option>
</select>
</form>


Quel est votre sport favori?



Exemple 2: Liste de 3 lignes

Quel est votre sport favori?
<form>
<select name="sport_favori" size="3">
<option value="all" selected>J'aime tous les sports</option>
<option value="judo">Judo</option>
<option value="football">Football</option>
<option value="basketball">Basketball</option>
</select>
<form>

Quel est votre sport favori?


Text Areas
Si l'usager doit pouvoir entrer plusieurs lignes de texte, utilisez le contrôle textarea. Le format de sa balise est le suivant:

<textarea name="xxxx" rows="xxxx" cols="xxxx" wrap="xxxx">
(texte par défaut ici)
</textarea>


Cinq conseils pour vos formulaires
Sur le Web, la présentation est essentielle, et si vous voulez un feedback de vos visiteurs, vous devez vous conformer à leurs préférences visuelles et à leurs habitudes de manipulations.

1. Ne les ennuyez pas. Incluez ce qui est nécessaire, jertez le reste.
Ne demandez pas à vos visiteurs décrire un livre pour vous donner un feedback. Gardez vos formulaires aussi simples que possible. Non seulement vos visiteurs ont d'autres choses à faire que de remplir de longs formulaires, mais ils sont aussi sensibles aux informations qu'ils transmettent sur Internet. Par exemple s'il s'agit d'un formulaire de commentaires, demandez leur nom, leur adresse Email, leurs commentaires. C'est tout!

2. Limitez la taille des entrées
Par exemple, vous pouvez rendre certaines rubriques obligatoires (pour savoir comment référez-vous à cet article Javascript ou à celui-ci PHP Vous pouvez aussi limiter les signes entrés dans une zone de texte comme suit:

<input type="text" name="Nom" size="20" maxlength="10">

Ceci est une zone de texte typique dénommée Nom, avec une taille de 20 et une longueur maximum de 10. Cela signifie que bien que la zone de texte s'étende sur 20 positions vers la droite, on ne pourra y entrer que 10 caractères. Ce type de restriction marchera bien avec le code d'une province ou d'un canton.

3. Mettez les sur la bonne voie
Est-ce trop demander que l'usager clique d'abord dans la première zone de remplissage. Cela se discute, mais cela est sécurisant. Voici comment placer automatiquement le curseur dans une zone de texte déterminée.

<body onLoad="document.forms[0].NomArticle.focus();">

Explication: Si vous avez une balise Body, copiez/collez simplement depuis onLoad vers la droite. Ce code demande de placer le curseur dans la zone de texte NomArticle du premier formulaire de la page. Notez, que vous pouvez placer le curseur, lors du chargement de la page, dans n'importe quelle zone de texte. Mais logiquement on va le placer dans la première zone à remplir.

4. Organisez les données du formulaire
Une bonne habitude est d'utiliser une table pour organiser le texte et les éléments à saisir. Par exemple on utilisera une table à deux colonnes. La colonne de gauche fournit la question ou le critère et l'autre colonne fournit la rubrique effective du formulaire.

5. Confirmez et remerciez
On fait simplement acte de politesse en remerciant les visiteurs d'avoir pris le temps de remplir le formulaire. De nombreux scripts côté serveur écrits en ASP, Cold Fusion, Perl, ou PHP fournissent automatiquement la possibilité de retourner une page de remerciements.
Haut du document Trucs et Astuces MS-Access