Aller au contenu

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`

Download souce

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

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.

Soluce
<?php 
$nom_cookie = "tri_utilisateur_" . $_SESSION['id_user'];