Supprimer une tâche
Objectifs pédagogiques
- Transmettre un identifiant par l'URL via
$_GET. - Supprimer un élément spécifique d’un tableau.
- Mettre à jour les données dans un fichier.
Exercice pratique
- Reprendre le fichier de la To-Do List avec ajout et persistance.
- Pour chaque tâche affichée, ajouter un lien "Supprimer".
- Le lien doit envoyer une requête avec un paramètre
indexvia l’URL. - À la réception de ce paramètre :
- Supprimer la tâche correspondante dans le tableau.
- Réécrire le tableau modifié dans le fichier JSON.
Correction
Visualiser la correction
Ajout du lien de suppression
php
<ul>
<?php foreach ($tasks as $index => $task): ?>
<li>
<?= $task ?>
<a href="?index=<?= $index ?>">Supprimer</a>
</li>
<?php endforeach; ?>
</ul>Traitement de la suppression
php
<?php
$file = 'tasks.json';
$tasks = file_exists($file)
? json_decode(file_get_contents($file), true)
: [];
if (isset($_GET['index'])) {
$index = (int) $_GET['index'];
if (array_key_exists($index, $tasks)) {
unset($tasks[$index]);
$tasks = array_values($tasks);
file_put_contents($file, json_encode($tasks, JSON_PRETTY_PRINT));
}
header('Location: ' . strtok($_SERVER["REQUEST_URI"], '?'));
exit;
}
?>Explications
$_GET['index']permet de récupérer l’index de la tâche à supprimer.unset($tasks[$index])supprime l’élément du tableau.array_values()est utilisé pour réindexer proprement le tableau (sinon on garde des "trous").file_put_contents()permet de réécrire le fichier après modification.- La redirection empêche qu’un simple rafraîchissement ne resupprime l’élément.