Créer une page de nom page1.html normalisée qui contient (de haut en bas) :
<form>
.
action="page1.html"
, la propriété «action» est obligatoire dans cette balise.method="get"
. Il y a 2 valeurs possibles GET ou POST, le rôle est très important lors de la validation du formulaire : “envoi de la requête HTTP”)
REMARQUE IMPORTANTE : Lorsque vous soumettez le formulaire : le navigateur web envoie une requête HTTP au serveur web dont le nom est défini l’attribut «action» : dans notre cas la page “page1.html”. Le serveur passe en paramètres tous les champs «input». Chaque paramètre possède comme nom l’attribut «name» du champ «input» et comme valeur le contenu de champ ou sa valeur «value» (attribut non obligatoire). Avec la méthode “GET”, on peut voir ces paramètres dans l’URL. Avec la méthode “POST”, ils sont cachés.
<fieldset>
<form method="get" action="page1.html" >
<fieldset>
<label for="nom">nom :</label>
<input type="text" name="nom" value="votre nom ?" id="nom">
<br>
<label for="pseudo">pseudo (login) :</label>
<input type="text" name="pseudo" value="" placeholder="entrer votre login" id="pseudo">
<br>
<input type="submit" name="f1_valider" value="valider">
</fieldset>
</form>
Remarque : un formulaire se compose généralement de la balise <form>
, avec eventuellement à l’intérieur la balise <fieldset>
. Chaque champ se compose ensuite de <label>
pour le texte et <input>
pour le champ de saisie.
L’attribut placeholder est une indication pour l’utilisateur. L’attribut “value” est la valeur initiale du contrôle, c’est cet attribut qui est fonctionnellement très important.
Ajouter dans ce formulaire :
Après avoir rempli le formulaire et appuyé sur le bouton, vous devriez voir apparaître dans l’URL les valeurs entrées dans les champs.
Conclusion : visualiser le contenu de l’URL, son contenu sera très utile coté serveur (pour le python, php …) !
Valider votre page sur le site http://validator.w3.org/
Pour les plus rapides :
Consulter la documentation sur le champ input. Tester d’autres types de champ d’entrée : “date”, “number”, “range” … pour ces nouveaux champs “input”.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>TP2 DIW</title>
<link rel="icon" type="image/x-icon" href="iconeweb.ico" >
<style>
form{ width: 800px;
margin :auto;
},select {
inputdisplay: block;
} [type=checkbox] ,input[type=radio] {
inputdisplay: inline;
}::placeholder {
inputcolor: blue;
}
:optional {background-color: silver;}
input:required {background-color: yellow;}
input:invalid {background-color: red;}
input</style>
</head>
<body>
<form action="form_etudiant.html" method="get">
<fieldset>
<legend>Informations Personnelles</legend>
<label for="nom">Nom</label>
<input type="text" name="nom" id="nom" required placeholder="Votre Nom">
<label for="prenom">Prénom</label>
<input type="text" name="prenom" id="prenom" placeholder="Votre Prenom">
<label for="email">Email</label>
<input type="email" name="email" id="email" required placeholder="Votre email">
<label for="telephone">Telephone</label>
<input type="text" id="telephone" name="telephone" title="N° à 10 chiffres sans espace" pattern="^0[0-9]{9}$" placeholder="votre telephone sur 9 chiffres" required >
<label for="date_naissance">Date de naissance</label>
<input type="text" id="date_naissance" name="date_naissance" title="date de naissance" pattern="^[0-9]{1,2}/[0-9]{1,2}/[0-9]{4}$" placeholder="jj/mm/aaaa" >
<label for="bac_id">Type de bac :</label>
<select name="bac_id" required id="bac_id">
<option value="">Saisir une valeur</option>
<option value="1">bac S</option>
<option value="2">bac STI</option>
<option value="3">bac STT</option>
<option value="4">autre</option>
</select>
</fieldset>
<fieldset>
<legend> Informations sur ce semestre </legend>
<label for="groupe_id"> Dans quel groupe êtes vous ?</label>
<select id="groupe_id" name="groupe_id">
<option value="">Saisir une valeur</option>
<option value="1">1A1</option>
<option value="2">1A2</option>
<option value="3">1B1</option>
<option value="4">1B2</option>
<option value="5">2A1</option>
<option value="6">2A2</option>
<option value="7" selected>2B1</option>
<option value="8">2B2</option>
<option value="9">3A1</option>
<option value="10">3A2</option>
<option value="11">3B1</option>
<option value="12">3B2</option>
</select>
<br>
<label for="numero">votre numéro ?</label>
<input type="text" id="numero" name="numero" disabled="disabled" value="champ non actif" >
<br>
<label>votre choix d'option :</label><br>
<input type="checkbox" name="allemand" > <label>allemand</label>
<input type="checkbox" name="sport" checked="checked" > <label>sport</label>
<br>
<label>Adhérent ABII :</label><br>
<input type="radio" name="adh_abii" value="oui" > <label>oui</label>
<input type="radio" name="adh_abii" value="non" > <label>non</label><br>
</fieldset>
<button type="submit" name="valider">Valider <img src="valider.jpeg" alt="bouton valider"></button>
<button type="reset" name="reset" >Effacer <img src="annuler.jpeg" alt="bouton annuler"></button>
</form>
</body>
</html>
Copier le code ci-dessus dans la page form_etudiant.html
Tester le formulaire dans un navigateur
Remarque sur la page :
display
permet de définir les balises INPUT
en “block”input[type=checkbox] ,input[type=radio]
permet de sélectionner les balises input
avec un attribut type
égal à checkbox
ou radio
et de transformer cette balise en balise de type inline
input:optional
, input:required
et input:invalid
permet de cibler les balises de type input
avec un attribut défini.Tester les 2 méthodes : mettre comme valeur à l’attribut “method” de la balise FORM la valeur “get” puis “post”, et valider votre formulaire. Regarder l’URL dans les 2 cas.
utiliser la documentation suivante pour changer de couleur le texte contenu dans l’attribut placeholder
.
mesStyles.css
, placer le CSS (contenu dans la balise <Style>
) dans ce fichier<link href="mesStyles.css" rel="stylesheet">
<body>
et les attributs pour mettre un arrière plan en jaune et et le texte d’une autre couleur.Voici 2 tableaux (listes) avec à l’intérieur des dictionnaires. Ces listes peuvent s’apparenter à des tableaux à 2 dimensions. C’est le résultat de 2 requêtes SQL. Ne pas utiliser ce code source python pour le moment.
= [
types_articles 'id': 1, 'libelle': 'Fourniture de bureau'},
{'id': 2, 'libelle': 'Mobilier'},
{'id': 3, 'libelle': 'Mobilier Jardin'},
{'id': 4, 'libelle': 'Arrosage'},
{'id': 5, 'libelle': 'Outils'},
{'id': 6, 'libelle': 'Divers'}
{
]
= [
articles 'id': 1, 'nom': 'Enveloppes (50p)', 'type_article_id': 1, 'prix': 2, 'stock': 1, 'description': None, 'image': None},
{'id': 2, 'nom': 'Stylo noir', 'type_article_id': 1, 'prix': 1, 'stock': 10, 'description': None, 'image': 'stylo.jpeg'},
{'id': 3, 'nom': 'Boite de rangement', 'type_article_id': 1, 'prix': 3, 'stock': 7, 'description': None, 'image': 'boites.jpeg'},
{'id': 4, 'nom': 'Chaise', 'type_article_id': 2, 'prix': 40, 'stock': 2, 'description': None, 'image': 'chaise.jpeg'},
{'id': 5, 'nom': 'Tables', 'type_article_id': 2, 'prix': 200, 'stock': 3, 'description': None, 'image': 'table.jpeg'},
{'id': 6, 'nom': 'Salon de Jardin alu', 'type_article_id': 3, 'prix': 149, 'stock': 3, 'description': None, 'image': 'salonJardin2.jpg'},
{'id': 7, 'nom': 'Table+6 fauteuilles de Jardin', 'type_article_id': 3, 'prix': 790, 'stock': 3, 'description': None, 'image': 'tableFauteuilsJardin1.jpg'},
{'id': 8, 'nom': 'Set Table + 4 bancs', 'type_article_id': 3, 'prix': 229, 'stock': 2, 'description': None, 'image': 'setTableChaises.jpg'},
{'id': 9, 'nom': 'arrosoir bleu', 'type_article_id': 4, 'prix': 14, 'stock': 2, 'description': None, 'image': 'arrosoir1.jpg'},
{'id': 10, 'nom': 'arrosoir griotte', 'type_article_id': 4, 'prix': 10, 'stock': 2, 'description': None, 'image': 'arrosoir2.jpg'},
{'id': 11, 'nom': 'tuyau arrosage', 'type_article_id': 4, 'prix': 32, 'stock': 3, 'description': None, 'image': 'tuyauArrosage1.jpg'},
{'id': 12, 'nom': 'tournevis', 'type_article_id': 5, 'prix': 24, 'stock': 3, 'description': None, 'image': 'lotTourneVis.jpg'},
{'id': 13, 'nom': 'marteau menuisier', 'type_article_id': 5, 'prix': 8, 'stock': 3, 'description': None, 'image': 'marteau.jpg'},
{'id': 14, 'nom': 'pince multiprise', 'type_article_id': 5, 'prix': 22, 'stock': 3, 'description': None, 'image': 'pinceMultiprise.jpg'},
{'id': 15, 'nom': 'perceuse', 'type_article_id': 5, 'prix': 150, 'stock': 3, 'description': None, 'image': 'perceuse.jpg'}
{ ]
Créer 2 fichiers form_type_article.html
et form_article.html
Le fichier form_type_article.html
contient un formulaire pour saisir le libellé d’un nouveau type d’article.
input
de type hidden
(champ caché) et de nom id
input
de type text
et de nom libelle
form
, mettre dans l’attribut action
comme valeur le nom de la page html et dans l’attribut method
la valeur get
même si ce sont les 2 valeurs par défaut. Les valeurs de ces 2 attributs seront modifiées avec le micro-framework python flask.Le fichier form_article.html
contient un formulaire pour saisir les informations concernant un article.
input
de type hidden
(champ caché) et de nom id
input
de type text
et de nom nom
select
) de nom type_article_id
avec pour valeur les identifiants des types d’articles et comme contenu affiché dans la liste déroulante les libellés associés aux identifiants des types d’articlesinput
de type number
et de nom prix
input
de type number
et de nom stock
textarea
de nom description
input
de type text
et de nom image
form
, mettre dans l’attribut action
comme valeur le nom de la page html et dans l’attribut method
la valeur get
même si ce sont les 2 valeurs par défaut. Les valeurs de ces 2 attributs seront modifiées avec le micro-framework python flask.Réaliser ces 2 formulaires
Valider votre page sur le site http://validator.w3.org/
Soumettre les 2 formulaires et vérifier que les informations saisies sont dans l’URL
ANNEXES : exemple de solutions