|
langage html
LES FORMULAIRES
HTML
Intérêt
d'un formulaire
Les
formulaires interactifs permettent aux auteurs de pages Web de dialoguer avec
leurs lecteurs, un peu comme les coupons-réponse que l'on trouve dans
les magazines.
Le
lecteur saisit des informations en remplissant des champs ou en cliquant sur
des boutons, puis appuie sur un bouton de soumission (submit) pour l'envoyer
soit à un URL, c'est-à-dire de façon générale
à une adresse e-mail ou à un script CGI (Common Gateway Interface,
traduisez "Interface de passerelle généralisée") stocké
sur un serveur et écrit dans un langage de programmation comme un shell
UNIX, PERL, TCL, Applescript, etc.
La
balise FORM
Les
formulaires sont délimités par la balise <FORM> ... </FORM>,
une balise qui permet de regrouper plusieurs éléments de formulaire
(boutons,champs de saisie,...) et qui possède les attributs obligatoires
suivants:
- METHOD
indique sous quelle forme seront envoyées les réponses "POST"
est la valeur qui correspond à un envoi de données stockées
dans le corps de la requête, tandis que "GET" correspond à un
envoi des données codées dans l'URL, et séparées
de l'adresse du script par un point d'interrogation (pour plus de renseignement
sur les méthodes POST et GET, consultez l'article sur le protocole
HTTP)
- ACTION
indique l'adresse d'envoi (script CGI ou adresse email (mailto:adresse.email@machine))
La
balise FORM possède comme attribut facultatif ENCTYPE qui spécifie
le codage des données dans l'URL, toutefois il n'est pas nécessaire
de le préciser car la valeur attribuée par défaut (application/x-www-form-urlencoded)
est la seule valeur valide. L'attribut facultatif ACCEPT permet de définir
les types MIME des données pouvant être envoyées par le formulaire.
Voici
la syntaxe de la balise FORM:
<FORM METHOD="POST" ou "GET" ACTION="url" ENCTYPE="x-www-form-urlencoded">
...
</FORM>
Voici
quelques exemples de balises FORM:
<FORM METHOD=POST ACTION="mailto:webmaster@commentcamarche.net">
<FORM METHOD=GET ACTION="http://www.commentcamarche.net/cgi-bin/script.cgi">
A
l'intérieur de la balise FORM...
La
balise FORM constitue en quelque sorte un conteneur permettant de regrouper
des éléments qui vont permettre à l'utilisateur de choisir
ou de saisir des données, ensemble de données qui seront envoyées
à l'URL indiqué dans l'attribut ACTION de la balise FORM
par la méthode indiquée par l'attribut METHOD.
Il
est possible d'insérer n'importe quel élément HTML de base
dans une balise FORM (textes,boutons,tableaux,liens,...) mais il est
surtout intéressant d'insérer des éléments interactifs.
Ces éléments interactifs sont:
- La
balise INPUT: un ensemble de boutons et de champs de saisie
- La
balise TEXTAREA: une zone de saisie
- La
balise SELECT: une liste à choix multiples
Envoi
des données
Lorsqu'un
formulaire est soumis (appui sur le bouton de soumission), les données
présentes dans le formulaire sont envoyées au script CGI sous
forme de paires nom/valeur, c'est-à-dire un ensemble de données
représentées par le nom de l'élément de formulaire,
le caractère "=", puis la valeur associée. L'ensemble
de ces paires nom/valeur étant séparées entre elles par
des esperluettes (caractère &). Les données envoyées ressembleront
donc à ceci:
champ1=valeur1&champ2=valeur2&champ3=valeur3
Dans le cas de la méthode GET (envoi des données à travers l'URL),
l'URL ressemblera à une chaîne du genre:
http://www.commentcamarche.net/cgi-bin/script.cgi?champ1=val1&champ2=val2
La
balise INPUT
La
balise INPUT est la balise essentielle des formulaires, car elle permet
de créer un bon nombre d'éléments "interactifs".
La syntaxe de cette balise est la suivante:
<INPUT type="Nom du champ" value="Valeur par défaut" name="Nom de l'élément">
L'attribut
name est essentiel car il permettra au script CGI de connaître le
champ associé à la paire nom/valeur, c'est-à-dire que le
nom du champ sera suivi du caractère "=" puis de la valeur entrée
par l'utilisateur, ou dans le cas contraire de la valeur par défaut repéré
par l'attribut value. L'attribut type permet de préciser
le type d'élément que représente la balise INPUT,
voici les valeurs que ce champ peut prendre:
- checkbox:
il s'agit de cases à cocher pouvant admettre deux états:
checked (coché) et unchecked (non coché). Lorsque
la case est coché la paire nom/valeur est envoyée au CGI
- hidden:
il s'agit d'un champ caché. Ce champ non visible sur le formulaire
permet de préciser un paramètre fixe qui sera envoyé
au CGI sous forme de paire nom/valeur
- file:
il s'agit d'un champ permettant à l'utilisateur de préciser
l'emplacement d'un fichier qui sera envoyé avec le formulaire. Il faut
dans ce cas préciser le type de données pouvant être envoyées
grâce à l'attribut ACCEPT de la balise FORM
- image:
il s'agit d'un bouton de soumission personnalisé, dont l'apparence
est l'image situé à l'emplacement précisé par
son attribut SRC
- password:
il s'agit d'un champ de saisie, dans lequel les caractères saisis
apparaissent sous forme d'astérisques afin de camoufler la saisie de
l'utilisateur
- radio:
il s'agit d'un bouton permettant un choix parmi plusieurs proposés
(l'ensemble des boutons radios devant porter le même attribut name.
La paire nom/valeur du bouton radio sélectionné sera envoyé
au CGI. Un attribut checked pour un des boutons permet de préciser
le bouton sélectionné par défaut
- reset:
il s'agit d'un bouton de remise à zéro permettant uniquement
de rétablir l'ensemble des éléments du formulaire à
leurs valeurs par défaut
- submit:
il s'agit du bouton de soumission permettant l'envoi du formulaire.
Le texte du bouton peut être précisé grâce à
l'attribut value
- text:
il s'agit d'un champ de saisie permettant la saisie d'une ligne de
texte. La taille du champ peut être définie à l'aide de
l'attribut size et la taille maximale du texte saisi grâce à
l'attribut maxlength
La
balise TEXTAREA
La
balise TEXTAREA permet de définir une zone de saisie plus vaste
par rapport à la simple ligne de saisie que propose la balise INPUT.
Cette balise possède les attributs suivants:
- cols:
représente le nombre de caractères que peut contenir une ligne
- rows:
représente le nombre de lignes
- name:
représente le nom associé au champ, c'est le nom qui permettra
d'identifier le champ dans la paire nom/valeur
- readonly:
permet d'empêcher l'utilisateur de modifier le texte entré par
défaut dans le champ
- value:
représente la valeur qui sera envoyée par défaut au script
si le champ de saisie n'est pas modifié par une frappe de l'utilisateur
La
balise SELECT
La
balise SELECT permet de créer une liste déroulante d'éléments
(précisés par des balises OPTION à l'intérieur
de celle-ci). Les attributs de cette balise sont:
- name:
représente le nom associé au champ, c'est le nom qui permettra
d'identifier le champ dans la paire nom/valeur
- disabled:
permet de créer une liste désactivée, c'est-à-dire
affichée en grisée
- size:
représente le nombre de lignes dans la liste (cette valeur peut être
plus grande que le nombre d'éléments effectifs dans la liste)
- multiple:
marque la possibilité pour l'utilisateur de choisir plusieurs champs
dans la liste
Un
exemple de formulaire
Les
formulaires peuvent être mis en page à l'aide de tableaux (cela
est même conseillé pour avoir une mise en page soignée).
Voici un exemple récapitulant les points ci-dessus et montrant comment
mettre en page un formulaire à l'aide d'un tableau:
<FORM method=post action="cgi-bin/script.pl">
Enregistrement d'un utilisateur
<TABLE BORDER=0>
<TR>
<TD>Nom</TD>
<TD>
<INPUT type=text name="nom">
</TD>
</TR>
<TR>
<TD>Prénom</TD>
<TD>
<INPUT type=text name="prenom">
</TD>
</TR>
<TR>
<TD>Sexe</TD>
<TD>
Homme : <INPUT type=radio name="sexe" value="M">
<br>Femme : <INPUT type=radio name="sexe" value="F">
</TD>
</TR>
<TR>
<TD>Fonction</TD>
<TD>
<SELECT name="fonction">
<OPTION VALUE="enseignant">Enseignant</OPTION>
<OPTION VALUE="etudiant">Etudiant</OPTION>
<OPTION VALUE="ingenieur">Ingénieur</OPTION>
<OPTION VALUE="retraite">Retraité</OPTION>
<OPTION VALUE="autre">Autre</OPTION>
</SELECT>
</TD>
</TR>
<TR>
<TD>Commentaires</TD>
<TD>
<TEXTAREA rows="3" name="commentaires">
Tapez ici vos commentaires</TEXTAREA>
</TD>
</TR>
<TR>
<TD COLSPAN=2>
<INPUT type="submit" value="Envoyer">
</TD>
</TR>
</TABLE>
</FORM>
Voici
le résultat de ce code HTML
Attributs
de la balise FORM et types d'entrées
page
suivante : les meta tags
|