Exercices — Préserver les données
Partie 1 : Utilisation de session
Section intitulée « Partie 1 : Utilisation de session »Exercice 1 – Un compteur de visites
Section intitulée « Exercice 1 – Un compteur de visites »Créez une page (par exemple accueil.php) qui compte combien de fois le visiteur l’a chargée pendant sa session, et affiche un message d’accueil personnalisé selon des paliers de visite.
Exemple de paliers
Section intitulée « Exemple de paliers »| Visites | Message |
|---|---|
| 1 | Bienvenue ! |
| 2 à 4 | Bon retour ! |
| 5 à 9 | Te revoilà ! |
| 10 et plus | Coucou, habitué ! |
VérificationIndice
Appelez session_start() avant toute sortie. Au premier passage, la clé n’existe pas encore : $_SESSION['visites'] ?? 0 donne la valeur de départ (0), à laquelle on ajoute 1. Après cet ajout, la première visite vaut donc 1, ce qui déclenche le premier palier.
Exercice 2 – Un panier en session
Section intitulée « Exercice 2 – Un panier en session »Créez une page boutique.php, qui présente cette liste de produits :
| id | nom | prix |
|---|---|---|
| 1 | Sirop d’érable 540 ml | 14,50 $ |
| 2 | Beurre d’érable 250 g | 9,95 $ |
| 3 | Tire sur la neige | 6,00 $ |
Chaque produit s’affiche dans une carte présentant son image, son nom, son prix et un bouton « Ajouter au panier » (?ajouter=<id>) qui l’ajoute au panier conservé en session.
Les cartes pourraient ressembler à ceci :
Une page panier.php affiche les produits du panier et le total:
- chaque ligne a un lien « Supprimer » permettant de supprimer le produit du panier,
- Un lien « Vider » (
?vider=1) retire tout du panier.
VérificationIndice
Rangez les produits dans un fichier de données commun aux deux pages, indexé par id. Le panier ne conserve que des id dans $_SESSION['panier'] ; le total se calcule en retrouvant chaque prix. Pour supprimer un article, array_splice retire l’élément à une position donnée. Échappez tout affichage avec htmlspecialchars.
Exercice 3 – Ajouter une base de données
Section intitulée « Exercice 3 – Ajouter une base de données »Placez la liste des produits dans une base de données et servez-la dans la boutique de l’exercice précédent, à la place du fichier de données.
VérificationIndice 1
Créez une table produits (id en AUTO_INCREMENT, nom, prix) et remplissez-la. Puis réécrivez data/produits.php : au lieu de return [...], il ouvre une connexion PDO, fait un SELECT, et reconstruit le même tableau id => produit avant de le retourner. La boutique et le panier n’ont alors rien à changer.
VérificationIndice 2
Script de création de table et pour l’insertion de données
CREATE TABLE produits ( id INT AUTO_INCREMENT PRIMARY KEY, nom VARCHAR(100) NOT NULL, prix DECIMAL(6, 2) NOT NULL);
INSERT INTO produits (nom, prix) VALUES ('Sirop d''érable 540 ml', 14.50), ('Beurre d''érable 250 g', 9.95), ('Tire sur la neige', 6.00);Partie 2 : Une page d’administration (CRUD)
Section intitulée « Partie 2 : Une page d’administration (CRUD) »Les produits sont maintenant en base de données. Une page d’administration permet de les gérer directement, sans passer par phpMyAdmin. Elle réunit les quatre opérations de base, résumées par l’acronyme CRUD : créer (Create), lire (Read), modifier (Update) et supprimer (Delete).
Voici à quoi la liste d’administration pourrait ressembler :
| id | Nom | Prix | Actions |
|---|---|---|---|
| 1 | Sirop d'érable 540 ml | 14,50 $ | |
| 2 | Beurre d'érable 250 g | 9,95 $ | |
| 3 | Tire sur la neige | 6,00 $ |
Exercice 4 – Lister les produits (Read)
Section intitulée « Exercice 4 – Lister les produits (Read) »Créez admin/produits.php : la page liste tous les produits dans un tableau, avec un lien « Modifier » et « Supprimer » par ligne, et un lien pour ajouter un produit.
VérificationIndice
Placez la connexion PDO dans un db.php que toutes les pages d’administration incluront. La lecture est un simple SELECT ... FROM produits. Chaque lien d’action transporte l’id de la ligne : modifier.php?id=... et supprimer.php?id=....
Exercice 5 – Ajouter un produit (Create)
Section intitulée « Exercice 5 – Ajouter un produit (Create) »Créez admin/ajouter.php : un formulaire (nom et prix) qui, à l’envoi, valide les données et insère le produit, puis redirige vers la liste.
VérificationIndice
Sur POST, validez le nom (non vide) et le prix (nombre positif), puis exécutez un INSERT préparé. Après l’insertion, header('Location: produits.php') renvoie vers la liste, suivi de exit.
Exercice 6 – Modifier un produit (Update)
Section intitulée « Exercice 6 – Modifier un produit (Update) »Créez admin/modifier.php?id=... : la page charge le produit visé, affiche un formulaire prérempli, puis enregistre les changements à l’envoi.
VérificationIndice
En GET, lisez le produit par son id (requête préparée) et préremplissez les champs avec l’attribut value, échappé. En POST, exécutez un UPDATE ... WHERE id = :id, puis redirigez vers la liste.
Exercice 7 – Supprimer un produit (Delete)
Section intitulée « Exercice 7 – Supprimer un produit (Delete) »Créez admin/supprimer.php?id=... : la page demande d’abord une confirmation, et supprime le produit seulement à l’envoi du formulaire.
VérificationIndice
Une suppression modifie l’état du système : elle ne doit pas se faire par une simple requête GET (une lecture doit rester sans effet). Affichez donc une confirmation, et exécutez le DELETE ... WHERE id = :id uniquement sur l’envoi POST, avant de rediriger.