Persistance des tâches
Objectifs pédagogiques
- Sauvegarder les tâches dans un fichier local (au lieu de les perdre à chaque rechargement).
- Charger les tâches depuis un fichier JSON à l’ouverture de la page.
- Appliquer la lecture/écriture conditionnelle selon la méthode HTTP.
Introduction
Jusqu’ici, les tâches étaient définies en dur dans le code. À présent, on souhaite qu’elles soient sauvegardées entre deux rechargements.
Nous allons utiliser un fichier tasks.json qui servira de base de données.
Exercice pratique
- Créer un fichier
index.php. - Si le fichier
tasks.jsonexiste, charger son contenu (décodage JSON). - Sinon, partir d’un tableau vide.
- Lorsqu’un formulaire est soumis via
POST, ajouter la tâche au tableau. - Réécrire le fichier
tasks.jsonavec la nouvelle liste. - Afficher la liste des tâches à chaque chargement.
Correction
Visualiser la correction
Chargement des tâches (au début du fichier)
php
<?php
$file = 'tasks.json';
if (file_exists($file)) {
$tasks = json_decode(file_get_contents($file), true);
} else {
$tasks = [];
}Ajout d’une tâche via un formulaire
php
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['task'])) {
$task = trim($_POST['task']);
if ($task !== '') {
$tasks[] = $task;
file_put_contents($file, json_encode($tasks));
}
}Affichage du formulaire
php
<form method="POST">
<input type="text" name="task" placeholder="Nouvelle tâche">
<button type="submit">Ajouter</button>
</form>Affichage de la liste des tâches
php
<?php if (count($tasks) > 0): ?>
<ul>
<?php foreach ($tasks as $task): ?>
<li><?= htmlspecialchars($task) ?></li>
<?php endforeach; ?>
</ul>
<?php else: ?>
<p>Aucune tâche enregistrée.</p>
<?php endif; ?>Explications
- Le fichier
tasks.jsonest utilisé comme stockage persistant. - Le
file_exists()vérifie si on peut charger des données. json_decode()transforme le fichier JSON en tableau PHP.json_encode()sauvegarde le tableau mis à jour.htmlspecialchars()sécurise l’affichage des entrées utilisateur.