Ajouter une tâche
Objectifs pédagogiques
- Comprendre comment créer un formulaire HTML.
- Utiliser la superglobale
$_POSTpour transmettre des données côté serveur. - Ajouter une entrée dans un tableau existant dynamiquement.
- Sécuriser les données saisies par l’utilisateur.
Introduction
Dans cette étape, l’objectif est de permettre à un utilisateur d’ajouter une tâche via un formulaire HTML.
Cela introduit un premier point d’entrée utilisateur, manipulé grâce à la superglobale $_POST.
Le formulaire transmet les données au serveur, où PHP les récupère, les sécurise, puis met à jour la liste des tâches.
Exercice pratique
- Créer un fichier
add-task.php. - Afficher un formulaire contenant :
- Un champ texte nommé
task - Un bouton de soumission
- Un champ texte nommé
- Lorsque le formulaire est soumis :
- Vérifier que le champ
taskest bien rempli - Ajouter la valeur au tableau
$tasks
- Vérifier que le champ
- Afficher à l’écran l’ensemble des tâches, y compris la nouvelle.
Correction
Visualiser la correction
1. Définition du tableau initial
php
<?php
$tasks = [
'Faire les courses',
'Réviser PHP',
'Appeler Jean'
];
?>Le tableau $tasks contient les tâches existantes.
Il est codé en dur ici pour simplifier l’exercice.
2. Formulaire HTML
php
<form method="POST">
<label for="task">Nouvelle tâche :</label>
<input type="text" name="task" id="task">
<button type="submit">Ajouter</button>
</form>- Le formulaire utilise
method="POST"pour envoyer les données. - Le champ
tasksera accessible via$_POST['task'].
3. Traitement de la soumission
php
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['task'])) {
$task = htmlspecialchars($_POST['task']);
$tasks[] = $task;
}
?>$_SERVER['REQUEST_METHOD']permet de vérifier si la requête est bien un POST.htmlspecialchars()protège contre l’injection de HTML.- La tâche est ensuite ajoutée au tableau
$tasks.
4. Affichage du tableau
php
<ul>
<?php foreach ($tasks as $task): ?>
<li><?= $task ?></li>
<?php endforeach; ?>
</ul>Cette boucle foreach permet de générer dynamiquement une liste HTML à partir du tableau.