VI.
Formulaires HTML
1.
Présentation
Jusqu'ici, les pages HTML sont des documents passifs, à consulter. L'utilisateur parcours des pages, mais ne peut pas écrire, fournir des informations, remplir un formulaire et le transmettre au serveur.
Les seules initiatives attendues de la part de l'utilisateur sont des choix de " navigation " qui lui sont proposés sous forme
d'hyperliens cliquables.
Les formulaires HTML (FORMS en anglais) sont des ensembles de
composants, appelés aussi champs qui permettent à l'utilisateur d'entrer des informations, d'exprimer ses choix, de saisir du texte…
Bien sûr les réactions à apporter à ces informations doivent être prévues à l'avance, et donc doivent être programmées.
Les programmes en général placés sur le serveur gèrent le dialogue avec le client-utilisateur.
Le langage JavaScript, plus limité, permet l'insertion de petits programmes dans les pages
HTML, les rendant ainsi interactives. Il est ainsi possible d'effectuer des traitements à partir des données entrées par l'utilisateur.
2. La balise FORM
Toute la partie formulaire de la page doit se trouver entre les marqueurs
<FORM>…</FORM>. Cette balise sert de conteneur pour accueillir les éléments ou composants du formulaire, comme par exemple un bouton, une ligne de texte, une liste de choix…
Chacun de ces composants s'y trouve déclaré et créé individuellement par une balise qui commence généralement par
INPUT ou par SELECT.
Voici un exemple significatif qui regroupe la plupart des catégories de composants que peut contenir une formulaire
HTML.
Chaque composant sera ensuite étudié en détail.
3. Un exemple complet
<H2><u><CENTER>Fiche de renseignements</CENTER></u></H2>
<FORM NAME= "Fiche_inscription ">
Nom : <INPUT TYPE = " text " NAME= "Nom " VALUE= " ">
Prénom : <INPUT TYPE = "text " NAME= "Prenom "VALUE= " ">
Mot de passe : <INPUT TYPE= "passsword " NAME= "Pass " SIZE=5><P>
Vous êtes en terminale S à dominante :
<INPUT TYPE="radio "NAME= "option "VALUE= "math "checked>Mathématiques
<INPUT TYPE="radio "NAME= "option "VALUE= "pc">Physique-chimie
<INPUT TYPE="radio "NAME= "option "VALUE= "svt">SVT
<P>
Quelle est votre discipline préférée ?
<SELECT NAME= "disciplines " MULTIPLE SIZE=3>
<OPTION>Physique
<OPTION SELECTED>Informatique
<OPTION>Philosophie
<OPTION>Mathematiques
<OPTION>Langues
<OPTION>SVT
<OPTION>Histoire
<OPTION>EPS
</SELECT>
<P>
Vous êtes inscrit(e)s en : <BR>
<INPUT TYPE = " checkbox " CHECKED NAME= "DEUG " >DEUG<BR>
<INPUT TYPE = " checkbox " CHECKED NAME= "CPGE " >CPGE<BR>
<INPUT TYPE = " checkbox " CHECKED NAME= "BTS " >BTS<BR>
<INPUT TYPE = " checkbox " CHECKED NAME= "IUT " >IUT<BR>
<INPUT TYPE = " checkbox " CHECKED NAME= "AUTRE " >AUTRE>
<P>
Ecrivez ci-dessous le sujet de votre projet informatique : <BR>
<TEXTAREA NAME= "Projet " ROWS=8 COLS=55>
Voici mon projet d'option informatique
<TEXTAREA>
<P>
<INPUT TYPE = " RESET " VALUE= "Effacer " >Pour recommencer<P>
<INPUT TYPE = " SUBMIT" " VALUE= "Valider" >Pour envoyer ces informations <P>
</FORM> |
4. Fiche de renseignements
Page obtenue :
Nom :……………….Prénom :………………………Mot de passe :
….……...
Vous êtes en terminale S à dominante :
Mathématiques
Physique-chimie
SVT
Physique
Informatique
Phylosophie
Quelle est votre discipline préférée ?
Vous vous êtes inscrit (e) s en :
DEUG
CPGE
BTS
IUT
AUTRE
Écrivez ci-dessous le sujet de votre projet informatique :
Voici mon projet d'option informatique
Effacer Pour recommencer
Valider Pour envoyer ces informations |
5. Champs de texte
a) Ligne de texte
<INPUT TYPE= "text " NAME= "Nom du champ " VALUE= "texte initial
" SIZE=longueur> |
Les divers paramètres :
· TYPE= "text " est facultatif, car il s'agit du type de champ par défaut (si on ne précise pas).
· NAME pour préciser le nom du champ (utile pour la programmation)
· VALUE pour donner un texte visible au champ
· SIZE fixe la longueur visible du champ (éventuellement son contenu défile vers la gauche)
· MAXLENGTH pour limiter le nombre de caractères pouvant être entrés dans le champs
Exemples :
Tapez votre nom : <INPUT NAME= "Nom "VALUE= "toto ">
Tapez votre adresse e-mail :<INPUT NAME= "e-mail "VALUE= "… @..fr "SIZE=40>
Code Postal : <INPUT NAME= "CP " SIZE=5 MAXLENGTH=5 VALUE= ""> |
b) Champ mot de passe
Quelquefois on ne veut pas que le texte tapé par l'utilisateur apparaisse à l'écran.
En particulier s'il s'agit d'un mot de passe ! Pour cela, on utilise le composant dont le type est
:
TYPE=PASSWORD.
<input type+ "PASSWORD " name= " mot_de_passe " MAXLENGTH=taille maximum> |
Exemple :
Entrez votre mot de passe : <INPUT TYPE= "password"maxlength=5> |
c) Zone de texte multiligne
Pour permettre à l'utilisateur de saisir de plusieurs lignes, on utilise le composant
<TEXTAREA>
<TEXTAREA NAME=".."ROWS=.. COLS+ ..>
Texte affiché par défaut… <BR>
</TEXTAREA> |
Les divers paramètres :
· ROWS pour préciser le nombre de lignes de la fenêtre de saisie
· COLS pour préciser le nombre de colonnes
· <TEXTAREA>texte </TEXTAREA>le texte inséré est directement affiché tel
quel l'utilisateur peut l'effacer.
Exemple :
<TEXTAREA NAME= " Demande " ROWS=8
COLS=55
Bonjour,
J'ai une demande très importante à formuler.
J'espère que vous pourrez me dépanner…
</TEXTAREA> |
6. Liste de sélection
Pour permettre un choix dans une liste de plusieurs options présentées sous forme de liste
déroulante, on utilise la balise <SELECT>
<SELECT NAME=
"… " SIZE=…>
<OPTION SELECTED>option 1
<OPTION>option 2
<OPTION>option 3
</SELECT> |
a) Les divers paramètres :
- <OPTION> pour introduire chaque option dans la liste.
- SIZE=... pour préciser le nombre de lignes visibles. S'il y a
plus d'options, la liste pourra être parcourue à l'aide d'une barre de
défilement.
- <OPTION SELECTED> pour sélectionner cette option par
défaut.
- <SELECT MULTIPLE> l'attribut facultatif MULTIPLE autorise
à sélectionner plusieurs options dans la liste.
Exemples :
Vous êtes inscrit(e) dans une classe de :
<SELECT NAME="Niveau"
SIZE=3>
<OPTION>seconde
<OPTION>première
<OPTION
SELECTED>terminale
<OPTION>section
BTS
</SELECT> |
première
terminale
Vous êtes inscrit(e) dans une classe de : section BTS
<SELECT NAME="pizza" MULTIPLE SIZE= 3 MULTIPLE>
<OPTION> anchois
<OPTION SELECTED>tomate
<OPTION> olives
<OPTION> anchois
<OPTION SELECTED> fromage
<OPTION> épices
<OPTION> viande hachée
<OPTION> câpres
</SELECT> |
anchois
tomate
Que désirez vous dans votre pizza ? olives
7. Cases à cocher
Afin de répondre à des questions du type Oui/Non ou Vrai/faux, on utilise des boîtes à cocher avec la balise :
<INPUT TYPE= "CHECKBOX " NAME= "…"
CHECKED>question |
a) Les divers paramètres
- <TYPE ="checkbox" > est indispensable pour produire une boite à cocher
- NAME= ".. " s'il y a plusieurs boites, chacune doit avoir un nom spécifique
- CHECKED pour cocher par défaut la boite (donc répondre Vrai par défaut).
Exemple :
<INPUT NAME= "Client " TYPE=CHECKBOX> Déjà client ?<BR>
<INPUT NAME ="Brochure" TYPE=CHECKBOX CHECKED>Demande d'une brochure |
Déjà client ?
Demande d'une brochure
8. Boutons de sélection (boutons radio)
Le type RADIO vous permet de définir des boutons radio. Ils sont utilisés lorsque l'utilisateur doit faire un choix entre plusieurs options concurrentes, qui s'excluent mutuellement.
Ils jouent ainsi un rôle analogue aux listes de sélection.
Il faut donc indiquer le groupe des boutons dans lequel ce choix exclusif doit s'exercer, en leur donnant un même nom (la valeur de l'attribut
NAME). L'utilisateur ne pourra alors sélectionner qu'un seul bouton radio à la fois dans chaque groupe.
<INPUT TYPE= "RADIO" NAME="nom" VALUE= ".." CHECKED>option1<BR>
<INPUT TYPE ="RADIO" NAME="nom" VALUE=".." >option 2 <BR>
<INPUT TYPE ="RADIO" NAME ="nom" VALUE=".." >option 3 |
a) Les divers paramètres :
- <TYPE="radio" > est indispensable pour produire des boutons radio
- NAME= "nom " l'ensemble des boutons doit porter le MEME nom
- VALUE= "…" chaque bouton radio doit posséder une valeur spécifique pour différencier les options.
- CHECKED pour désigner LE bouton sélectionné par défaut.
Exemple :
Vous habitez : <BR>
<INPUT TYPE=RADIO NAME="Ville" VALUE="E" CHECKED> Rabat
<INPUT TYPE=RADIO NAME="Ville" VALUE="SD">Casa
<INPUT TYPE=RADIO NAME="Ville" VALUE="V" Marrakech
<INPUT TYPE=RADIO NAME="Ville" VALUE="S" Tanger |
Vous habitez :
* Rabat * Casa * Marrakech * Tanger
9. Boutons de commande
Les boutons servent à recevoir des "clics". Leur principale fonction est de permettre à l'utilisateur de déclencher des évènements auxquels seront rattachés des fonctions.
a) Boutons communs
<INPUT TYPE= "Button " NAME= " .." VALUE= "Cliquez "> |
La valeur de l'attribut VALUE est le texte gravé sur le bouton.
Un bouton sert essentiellement à déclencher des traitements locaux, par appel d'une fonction écrite en langage JavaScript.
b) Bouton de validation
Ce bouton sert à valider les informations saisies dans les champs du formulaire. Il provoque l'expédition de ces informations soit sur le serveur pour y être traitée, soit en message électronique ou bien
<INPUT TYPE= "SUBMIT" NAME=".."
VALUE="Envoyer"> |
c) Bouton de réinitialisation
Ce bouton remet le formulaire dans son état initial, en réinitialisant les valeurs par défaut.
<INPUT TYPE= "RESET" VALUE="Effacer> |
10. Transmission des données
La balise FORM possède plusieurs attributs, permettant de spécifier ce qui doit être fait lorsque l'utilisateur veut envoyer les données au serveur.
Attribut action
<FORM ACTION=url "…> permet d'indiquer l'URL (de protocole : http,
ftp, gopher, file, mailto, news, telnet,…) qui va recevoir les informations entrées dans le formulaire, lorsque l'on cliquera sur le bouton de
validation.
Plus précisément, l'URL est l'adresse d'un programme (un script) qui va récupérer les données et les traiter. Si le champ ACTION est absent,
l'URL sera celle du document courant.
Attribut method
L'attribut method permet d'indiquer la méthode de transmission des données saisies dans le formulaire.
Il y en a deux :
- La méthode GET, méthode par défaut, consiste à concaténer les données du formulaire à l'URL spécifiée dans ACTION, après avoir inséré un point d'interrogation.
Ces données sont incluses sous forme d'une liste non-champ=valeur-champ.
On obtient alors une requête adressée au serveur, du genre :
http://serveur/chemin/prog.html?champ1=valeur1&champ2=valeur2&...
- La méthode POST génère une requête http spéciale qui envoie les données au serveur (plutôt qu'en l'accolant à l'URL). Il est recommandé d'utiliser la méthode POST.
|