Skip to content

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

  1. Reprendre le fichier de la To-Do List avec ajout et persistance.
  2. Pour chaque tâche affichée, ajouter un lien "Supprimer".
  3. Le lien doit envoyer une requête avec un paramètre index via l’URL.
  4. À 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.