HTML et les formulaires⚓︎
Fiche méthode & révision — Première NSI · Chapitre 9
Fiche compacte pour refaire seul les exercices : structure d'une page HTML, liens, images, tableaux, formulaires et requêtes GET / POST.
1. Objectifs⚓︎
À la fin du chapitre, vous devez savoir :
- connaître la structure d'une page HTML et les balises principales ;
- lire du code HTML et prévoir son rendu ;
- expliquer la différence client / serveur et GET / POST ;
- créer : paragraphes, titres, listes, liens, images, tableaux, formulaires.
2. Définitions essentielles⚓︎
| Terme | Définition |
|---|---|
| Web | Ensemble de pages reliées par des liens. |
| Internet | Réseau mondial reliant les machines. |
| HTTP | Protocole d'échange entre navigateur et serveur. |
| URL | Adresse d'une ressource. |
| HTML | Langage de description d'une page. |
| Navigateur | Logiciel qui affiche les pages. |
| Balise | Élément <…> structurant le contenu. |
| Attribut | Précision dans une balise (href, src…). |
| Balise orpheline | Balise sans fermeture (<br>, <img>). |
| Chemin absolu / relatif | Adresse complète / relative au fichier courant. |
| Ancre | Lien vers un endroit précis d'une page (#id). |
| Formulaire | Zone de saisie envoyée au serveur. |
| Client / serveur | Navigateur / machine qui répond. |
| Requête | Demande envoyée au serveur. |
| GET / POST | Données dans l'URL / dans le corps de la requête. |
| Cookie | Petite donnée stockée par le navigateur. |
| HTTPS | HTTP sécurisé (chiffré). |
3. Fiches méthodes⚓︎
Créer la structure minimale d'une page
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Titre</title>
</head>
<body>
<!-- contenu -->
</body>
</html>
<!DOCTYPE html> ou le charset.
Indenter et commenter
- Indenter les balises imbriquées ; commenter avec
<!-- … -->.
Paragraphe, retour à la ligne, titres
<h1>Titre 1</h1>
<h2>Titre 2</h2>
<p>Un paragraphe.<br>Nouvelle ligne.</p>
<h1> mal utilisés (un seul titre principal).
Mettre un texte en valeur
<strong>important</strong>, <em>en italique</em>.
Liste à puces ou numérotée
<ul><li>puce</li></ul> <!-- à puces -->
<ol><li>numéro</li></ol> <!-- numérotée -->
<ul> / <ol> ou oublier <li>.
Lien absolu
<a href="https://exemple.fr">Lien</a>.
Lien relatif (fichier, sous-dossier, parent)
<a href="page.html">même dossier</a>
<a href="dossier/page.html">sous-dossier</a>
<a href="../page.html">dossier parent</a>
Créer une ancre
<h2 id="partie1">Partie 1</h2>
<a href="#partie1">Aller à la partie 1</a>
<a href="autre.html#partie1">Autre page, partie 1</a>
# dans le lien, ou mettre # dans la valeur de id.
Insérer une image
<img src="photo.png" alt="description" title="info-bulle">.
- Erreur : oublier alt (accessibilité).
Choisir un format d'image
| Format | Usage |
|---|---|
| JPEG | photos (compression avec pertes) |
| PNG | sans perte, transparence |
| GIF | 256 couleurs, animation |
| BMP | non compressé (lourd) |
Créer un tableau
<table>
<tr><th>Nom</th><th>Note</th></tr>
<tr><td>Alice</td><td>15</td></tr>
</table>
<tr> = ligne, <th> = en-tête, <td> = cellule.
Créer un formulaire
<form action="traitement.php" method="post">
<input type="submit" value="Envoyer">
</form>
Associer un <label> à un champ
<label for="nom">Nom :</label>
<input type="text" id="nom" name="nom">
for du label = id du champ.
Choisir le bon type d'input
text, password, email, number, date, checkbox, radio, submit.
Boutons radio ou cases à cocher
<input type="radio" name="choix" value="a"> A
<input type="radio" name="choix" value="b"> B
<input type="checkbox" name="opt" value="x"> X
Créer une liste déroulante
<select name="pays">
<option value="fr" selected>France</option>
<option value="be">Belgique</option>
</select>
Utiliser name, value, checked, selected, required
name: nom de la donnée envoyée ;value: sa valeur ;checked: case/radio cochée ;selected: option choisie ;required: champ obligatoire.
Choisir entre GET et POST
- GET : données dans l'URL (visibles, recherches) ;
- POST : données dans le corps (mots de passe, gros volumes).
Lire les paramètres d'une URL
page.html?nom=Alice&age=15 → nom = Alice, age = 15.
4. Tableaux récapitulatifs⚓︎
Balises et rôles
| Balise | Rôle |
|---|---|
<html> |
racine de la page |
<head> |
métadonnées |
<body> |
contenu visible |
<h1>…<h6> |
titres |
<p> |
paragraphe |
<a> |
lien |
<img> |
image |
<table> |
tableau |
<form> |
formulaire |
Paires vs orphelines
| Type | Exemples |
|---|---|
| Paire | <p>…</p>, <a>…</a>, <ul>…</ul> |
| Orpheline | <br>, <img>, <meta>, <input> |
Liens
| Type | Exemple |
|---|---|
| Absolu | href="https://…" |
| Relatif | href="page.html", href="../page.html" |
| Ancre | href="#id", href="autre.html#id" |
Éléments de formulaire
| Élément | Rôle |
|---|---|
<input> |
champ de saisie |
<label> |
étiquette |
<select> / <option> |
liste déroulante |
<textarea> |
texte long |
bouton submit |
envoi |
Types d'input
text · password · email · number · date · checkbox · radio · submit.
GET vs POST
| GET | POST | |
|---|---|---|
| Données | dans l'URL | dans le corps |
| Visibilité | visibles | non visibles dans l'URL |
| Usage | recherches, liens | mots de passe, gros volumes |
| Sécurité | faible (ni l'un ni l'autre ne chiffre) | idem (chiffrement = HTTPS) |
Client / serveur
| Côté | Rôle |
|---|---|
| Client | le navigateur envoie la requête |
| Serveur | répond et renvoie la page |
5. Lecture et compréhension de code⚓︎
Méthode
- repérer l'arborescence des balises (imbrication) ;
- retrouver le parent d'un élément (la balise englobante) ;
- identifier un attribut (
href,src,name…) ; - prévoir le rendu (titre, liste, lien, image…) ;
- corriger une fermeture manquante ;
- vérifier un chemin (relatif / absolu) ;
- retrouver les données envoyées (attributs
name/value) ; - distinguer le texte affiché et la
valuetransmise.
6. Erreurs fréquentes⚓︎
| Erreur | Cause / correction |
|---|---|
| Balise non fermée | fermer (</p>, </a>…) |
| Mauvaise imbrication | fermer dans l'ordre inverse de l'ouverture |
Contenu hors de <body> |
placer le visible dans <body> |
Oubli de <!DOCTYPE html> |
l'ajouter en première ligne |
| Mauvais encodage | <meta charset="utf-8"> |
Plusieurs <h1> mal utilisés |
un seul titre principal |
Confusion <ul> / <ol> |
puces vs numéros |
Oubli de <li> |
chaque élément dans un <li> |
| Mauvais chemin | vérifier dossier / ../ |
Oubli du # dans un lien d'ancre |
href="#id" |
# dans la valeur de id |
id="partie1" (sans #) |
Oubli de alt |
toujours décrire l'image |
Oubli de name |
sinon la donnée n'est pas envoyée |
| Radios à noms différents | même name pour s'exclure |
Confusion checked / selected |
radio/case vs option de liste |
| GET pour un mot de passe | utiliser POST |
| Croire que POST chiffre | seul HTTPS chiffre |
7. Questions-réponses corrigées⚓︎
Vocabulaire⚓︎
1. (N1) Qu'est-ce qu'une balise orpheline ?
Une balise sans fermeture (<br>, <img>).
2. (N1) Que fait l'attribut href ?
Il indique la destination d'un lien.
3. (N2) Différence entre client et serveur ?
Le client (navigateur) envoie la requête ; le serveur répond.
4. (N1) Qu'est-ce qu'une ancre ?
Un lien vers un endroit précis d'une page (#id).
5. (N2) Que fait HTTPS de plus que HTTP ?
Il chiffre les échanges.
Compréhension⚓︎
6. (N1) Où place-t-on le contenu visible d'une page ?
Dans <body>.
7. (N2) Pourquoi mettre l'attribut alt sur une image ?
Pour l'accessibilité (texte de remplacement).
8. (N2) Pourquoi des boutons radio doivent-ils partager le même name ?
Pour qu'ils s'excluent mutuellement (un seul choix).
9. (N3) Pourquoi ne pas envoyer un mot de passe en GET ?
Il apparaîtrait dans l'URL (visible).
10. (N2) POST suffit-il à sécuriser des données ?
Non : POST ne chiffre pas ; il faut HTTPS.
Lecture de code⚓︎
11. (N1) Que produit <ol><li>A</li><li>B</li></ol> ?
Une liste numérotée : 1. A 2. B.
12. (N2) Quel est le parent de <li> dans une liste ?
<ul> ou <ol>.
13. (N2) Que vaut la donnée envoyée par <input name=\"age\" value=\"15\"> ?
age = 15.
14. (N3) <a href=\"#bas\"> mène où ?
À l'élément ayant id=\"bas\" dans la même page.
15. (N2) Différence entre le texte d'un <option> et sa value ?
Le texte est affiché ; la value est envoyée.
Liens et images⚓︎
16. (N1) Écrire un lien vers https://exemple.fr.
<a href=\"https://exemple.fr\">Lien</a>.
17. (N2) Lien relatif vers le dossier parent ?
<a href=\"../page.html\">…</a>.
18. (N2) Insérer une image chat.png avec description.
<img src=\"chat.png\" alt=\"un chat\">.
19. (N3) Quel format choisir pour une photo ?
JPEG.
20. (N3) Quel format pour une image avec transparence ?
PNG.
Formulaires⚓︎
21. (N1) Quelle balise crée un formulaire ?
<form>.
22. (N2) Comment rendre un champ obligatoire ?
Ajouter l'attribut required.
23. (N2) Associer un label au champ id=\"mail\".
<label for=\"mail\">…</label>.
24. (N3) Pré-cocher un bouton radio ?
Ajouter checked.
25. (N3) Pré-sélectionner une option de liste ?
Ajouter selected sur l'<option>.
Correction d'erreurs⚓︎
26. (N1) <p>Texte : erreur ?
Balise non fermée : <p>Texte</p>.
27. (N2) <img src=\"x.png\"> sans alt : erreur ?
Ajouter alt=\"…\".
28. (N2) id=\"#section\" : erreur ?
Le # ne va que dans le lien : id=\"section\".
29. (N3) Deux radios name=\"a\" et name=\"b\" : erreur ?
Même name requis pour s'exclure.
30. (N2) Mot de passe envoyé en GET : erreur ?
Utiliser POST (et HTTPS pour chiffrer).
Production⚓︎
31. (N1) Écrire un titre de niveau 2 « Menu ».
<h2>Menu</h2>.
32. (N2) Créer une liste à puces de deux fruits.
<ul><li>pomme</li><li>poire</li></ul>.
33. (N2) Créer un champ texte nommé pseudo.
<input type=\"text\" name=\"pseudo\">.
34. (N3) Créer une liste déroulante de deux pays.
<select name=\"pays\">
<option value=\"fr\">France</option>
<option value=\"be\">Belgique</option>
</select>
35. (N4) Écrire un mini-formulaire de paiement en POST (nom + carte).
<form action=\"paiement.php\" method=\"post\">
<label for=\"nom\">Nom :</label>
<input type=\"text\" id=\"nom\" name=\"nom\" required>
<label for=\"carte\">Carte :</label>
<input type=\"text\" id=\"carte\" name=\"carte\" required>
<input type=\"submit\" value=\"Payer\">
</form>
8. Exercices flash corrigés⚓︎
Compléter une balise : <a ____=\"page.html\">
href.
Fermer une structure : <ul><li>A
<ul><li>A</li></ul>.
Choisir un titre : titre principal de la page
<h1>.
Créer une liste numérotée de 3 étapes
<ol><li>1</li><li>2</li><li>3</li></ol>.
Corriger un lien : <a href=\"bas\"> vers une ancre
<a href=\"#bas\">.
Écrire une ancre cible « contact »
<h2 id=\"contact\">Contact</h2>.
Insérer une image logo.png
<img src=\"logo.png\" alt=\"logo\">.
Compléter un tableau : ligne d'en-têtes
<tr><th>Nom</th><th>Âge</th></tr>.
Choisir un type d'input pour un email
type=\"email\".
Prévoir l'URL d'un GET avec nom=Zoe
page.html?nom=Zoe.
Transformer un formulaire GET en POST
Remplacer method=\"get\" par method=\"post\".
À retenir absolument⚓︎
Squelette HTML
<!DOCTYPE html>
<html lang=\"fr\">
<head><meta charset=\"utf-8\"><title>…</title></head>
<body> … </body>
</html>
Balises & éléments clés
- titres
<h1>…<h6>, paragraphe<p>, listes<ul>/<ol>+<li>; - lien
<a href=\"…\">(absolu / relatif / ancre#id) ; - image
<img src=\"…\" alt=\"…\">; - tableau
<table>+<tr>+<th>/<td>; - formulaire
<form>+<label>+<input>; l'attributnamenomme la donnée envoyée.
GET vs POST
- GET : données dans l'URL (visibles) ;
- POST : données dans le corps (mots de passe, gros volumes) ;
- aucun des deux ne chiffre : le chiffrement, c'est HTTPS.