Accueil

Traduction

Débuter en programmation web - sommaire

Débuter en programmation web - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

HTML & CSS : les formulaires

Dès que l'on est sur la "toile" on passe son temps à remplir des formulaires.
Pour créer votre espace personnel sur un site, vous devez remplir un formulaire.
Commander en ligne : une succession de formulaires à renseigner.

Attention l'envoi des données dans le cadre d'un formulaire c'est le "boulot" du HTML mais le traitement des données envoyées ça dépasse les possibilités du HTML. On fait donc appel au langage PHP et au SQL (SQL : langage de gestion d'une base de données).

Attention le traitement avec PHP des données soumissionnées est évoqué dans un autre chapitre du même tuto. Voir la partie "Initiation au PHP & SQL".

Les balises de formulaire

Le conteneur FORM

Le code d'un formulaire se place à l'intérieur de la balise double FORM.

La balise FORM comprend deux attributs obligatoires s'il s'agit d'un formulaire de soumission (envoi de données) : action et method.
Attribut action : précise l'adresse de la page vers laquelle les données sont envoyées (en vue d'un traitement PHP en général). En cas de succès de la soumission la page précisée par l'attribut action va s'afficher à la place de celle contenant le formulaire.

L'outil formulaire peut aussi être utilisé pour saisir des données en vue d'un traitement JavaScript. Dans ce cas les attributs de la balise FORM sont inutiles !

Les zones de saisie

Les légendes

On associe en général à chaque zone de saisie une légende grâce au conteneur LABEL

Les boutons de commande

Remarque

La balise FORM est de type block. les autres balises utilisées au sein d'un formulaire (input, button, label,etc.) sont par défaut de type inline.
Remarque : il est souvent utile de transformer ces éléments "inline" en éléments "inline-block" c'est à dire en boites sans saut de ligne.

Exemple 1

Nous avons créé notre espace personnel sur un site et nous voulons nous connecter à celui-ci.
Il faut donc saisir notre identifiant et notre mot de passe. Il faut mieux que le mot de passe saisi n'apparaisse pas à l'écran.

Le code de la page (extraits)

Commentaire du code CSS

label, input, button {display : inline-block ; width : 44% ; height : 30px ; margin :10px 1%; } : Largeur exprimée en % du conteneur (FORM). les balises citées deviennent des "boîtes inline" c'est à dire qu'elles se mettent côté à côte tant qu'il y a de la place (et non pas les unes en dessous des autres).
Comme la largeur totale de chaque élément inline-block est de 46% (44% + 2% de marges externes gauche et droite) il y aura toujours (et seulement) deux éléments côte à côte : la légende et la zone de saisie correspondante.

Commentaire du HTML

<form action = 'trait1.htm' method ='get'>
Après soumission des données vous êtes redirigé vers la page "trait1.htm" ; les données saisies dans le formulaire apparaîtront dans la barre d'url de la page "trait1.htm" car method a la valeur get.

<label>identifiant : </label> < input type = "text" name = 'identifiant' >

<input type = "password" name = 'motdepasse' >
création d'un champ dans lequel la saisie effectuée n'apparaît pas ; chaque caractère saisi affichée sous forme d'un point.

Remarquez que pour chaque zone de saisie il y a l'attribut name. La valeur de l'attribut name est utilisé dans le cadre du traitement PHP des données. Donc ne l'oubliez pas.
Les attributs name peuvent aussi être utilisés dans le cadre d'un contrôle de saisie côté client en JavaScript.
Il ne doit pas y avoir deux champs de saisie avec le même nom dans un formulaire.

<button type = 'submit' > connexion </button>
Création d'un bouton de soumission. Si clic sur ce bouton les données saisies sont envoyées dans la page précisée par la valeur de l'attribut action de la balise form et cette page s'affiche !

Tests

Procédons à une série de tests.

Premier test

Saisissez l'identifiant : "Macron"
puis le mot de passe : "Brigitte"
enfin cliquez sur le bouton légendé "connexion"
Vous arrivez alors sur une nouvelle page : "trait1.htm"
Dans cette page observez bien la barre d'url
Vous lisez à la fin de la chaîne :

Faites le premier test !
Donc Le mot de passe apparaît en clair dans la barre d'url ! C'est fâcheux ...

Deuxième test

Vous laissez les deux champs vides et vous cliquez sur le bouton "connexion".
Faites ce deuxième test !
Vous arrivez quand même sur la page "trait1.htm" ... C'est très embêtant ...
Il faudrait que l'envoi soit bloqué si un des deux champs n'est pas rempli. Il faudrait aussi que le mot de passe n'apparaisse pas en clair dans la barre d'URL.

Solution

Le code CSS & HTML doit être modifié.
Ajouts dans la feuille de style :

Le code du conteneur FORM:

Nous utilisons deux nouvelles pseudo-classes introduites par CSS 3 :
:valid et :invalid

Donc tant que la saisie est invalide le texte saisi sera en rouge mais passera au vert dès que la saisie correspondra au "pattern" (modèle).

Analyse du code HTML

Pour chacun des deux champs on a ajouté les nouveaux attributs suivants : maxlength, pattern, placeholder
Attribut pattern = "expression régulière" :

La valeur de l'attribut pattern est une expression régulière. Voir ci-dessous.
Attribut maxlength = "entier" qui précise le nombre de caractères maximum autorisés.

Attribut placeholder = "texte" : la valeur de cet attribut est le contenu du champ tant qu'il n'est pas renseigné. Cet attribut est utilisé pour guider l'internaute dans sa saisie.

Expressions régulières