En pratique : cookie
La gestion des sessions étant implémentée, nous allons réaliser les fonctionnalités suivantes :
- dans la page "gestion", permettre le tri des articles par id ou par titre en cliquant sur l'intitulé des colonnes du tableau
- mémoriser le choix du tri dans un cookie
Pour cette partie, téléchargez la version de départ sur GitHub >>
Veillez à modifier les valeurs dans les fichiers de configuration (config_perso.inc.php etconfig.inc.php)
Astuce
Pour télécharger les sources,
- cliquer sur le bouton vert `<> Code`
- cliquer sur `Download Zip`
![]()
Test
Testez le site :
- Connectez-vous
- Affichez la page de gestion des articles
- Cliquez sur l'intitulé Titre (les articles seront triés par titre)
- Cliquez sur le lien pour ajouter un nouvel article
- Revenez sur la page de gestion des articles
- Que constatez-vous ?
Code du tri
- Analysez le code. Comment est implémenté le tri ?
Soluce
Côté client (navigateur)
-
Le navigateur affiche une page HTML générée par PHP, contenant un tableau avec des en-têtes de colonnes cliquables
-
Chaque en-tête de colonne contient un bouton de fomulaire qui pointe vers la même page, mais avec un paramètre POST indiquant la colonne de tri
Côté serveur (PHP et MySQL)
- Lorsque l'utilisateur clique sur un en-tête de colonne, une nouvelle requête HTTP est envoyée au serveur
- Le script PHP récupère le paramètre de tri depuis l'URL ($_POST)
- PHP se connecte à la base de données MySQL
- Une requête SQL est construite avec une clause ORDER BY correspondant à la colonne sélectionnée
- Les données triées sont récupérées de la base de données
- PHP génère une nouvelle page HTML complète avec le tableau trié
- Cette page HTML est renvoyée au navigateur
Création Cookie
Nous allons créer un cookie pour stocker la préférence de l'utilisateur. Quelles sont les étapes à prévoir ?
Soluce
- Lorsque l'utilisateur clique sur l'intitulé de la colonne,
- création du cookie
- Lorsque la page est appelée
- si un cookie existe, il faut récupérer sa valeur pour l'utiliser dans la requête sql
Soluce
<?php
$nom_cookie = "tri_utilisateur_";
//soumission du tri
if (isset($_POST['boutonTri'])) {
$expire_cookie = time() + 3600; // Durée de validité : 1 heure
// Création du cookie avec la clé de tri
setcookie($nom_cookie, $tri, $expire_cookie, "/~q123456/");
} elseif (isset($_COOKIE[$nom_cookie])) {
$tri = $_COOKIE[$nom_cookie];
}
Warning
Testez votre code. Corrigez les erreurs éventuelles avant d'aller plus loin.
Test
- Connectez-vous avec l'utilisateur
jul(mdp =jul) - Affichez la page
Gestion des articles - Cliquez sur le bouton
Titre
Les articles sont triés par titre.
- Déconnectez-vous
- Connectez-vous avec l'utilisateur
admin(mdp =admin) - Affichez la page
Gestion des articles
Que constatez-vous ? Pourquoi ? Utilisez la console pour vous aider et trouvez une solution.