TUTORIELS 
Gestion d'un caddie en PHP

Page 1 | 2

Réalisation pas à pas d'un "panier d'achats", brique indispensable de tout site de commerce électronique.
 (3 novembre 2003)
 
Caddie, panier, chariot... Les termes sont nombreux pour désigner une seule et même chose : l'emplacement où le site Web stocke une sélection d'articles, généralement en prévision d'un "passage à la caisse".

Un caddie sert deux types de visiteurs : ceux qui sont enregistrés sur le site, et ceux qui ne le sont pas (encore). Dans les deux cas, le fonctionnement du caddie est le même : l'utilisateur parcourt le catalogue disponible sur le Web, choisit les produits qu'il désire acheter, et en fin de parcours, regarde une dernière fois le contenu de son caddie afin d'y apporter quelques éventuelles modification avant de valider l'achat et de payer le tout.

Dans ce scénario classique, tout ce qui concerne la gestion du catalogue, de l'inscription du visiteur à la gestion du paiement ne concerne pas notre caddie : nous partons donc du principe que vous disposez déjà d'une telle infrastructure...

L'art des choix
Notre souci premier sera de conserver les données envoyées par le visiteur pendant sa présence sur le site (ou "session client") : en effet, il ne fait que passer de page en page, sélectionnant ici ou là un ou plusieurs produits - il s'attend logiquement à tous les retrouver dans son panier. Pour cela, nous avons deux solutions : les cookies, ou les sessions serveur.

Les cookies sont de petits fichiers textes, stockés par le serveur sur l'ordinateur du client. Un cookie peut contenir jusqu'à 4 Ko d'informations, et un serveur ne peut normalement envoyer que 20 cookies par client. Par ailleurs, un ordinateur n'est pas sensé accepter plus de 300 cookies. Sa durée de vie peut varier de la durée de la session client (jusqu'à la fermeture du navigateur) à plusieurs années...
4 Ko permet de stocker un bon nombre d'informations, mais il peut toujours arriver une commande dépassant cette taille. Pire : les clients peuvent parfaitement choisir de ne pas accepter certains cookies...

Les sessions sont probablement le meilleur choix. Lorsqu'un site utilise des sessions, chaque visiteur reçoit un identifiant unique, qui correspond au nom du fichier, stocké sur le serveur, contenant les informations enregistrées par celui-ci. La taille du fichier est (en théorie) illimitée, il le suit durant la totalité de la session, et même après : la durée de vie d'une session est généralement de 24 minutes, donc si l'utilisateur ferme le navigateur par inadvertance, il pourra retrouver sa session en se reconnectant...

Utilisation des sessions
Les informations relatives aux articles sélectionnés sont donc stockées dans une session serveur, ou plus précisément dans des variables de session.

Utiliser une session n'est pas très compliqué : il suffit d'ajouter au début de chaque page les utilisant (donc, le catalogue) le code suivant :

<?php session_start(); ?>

Cela initialise la session (ou retrouve une session sur le serveur). Pour comprendre les sessions, reportez-vous à notre article "La gestion des sessions en PHP4".

Notre session, tout du long du cheminement du (futur) client, contiendra une variable dédiée uniquement à la commande en train de se construire : un tableau associatif, $achats[x][y]. Le tableau "x" ne contiendra qu'une valeur, le numéro du produit dans la commande, tandis que le tableau "y" contiendra l'id du produit, et la quantité voulue. Par exemple, écrit directement en PHP, nous aurions pour un seul produit :

<?php
  $achats = array (
    "1" => array("id => 135423, "qte" => 2)
    );
?>

En travaillant avec les sessions, cela prendrait la forme suivante :

session_start();
$_SESSION['achats'] = array ("id" => 135423, "qte" => 2);

Discutez en sur les forums

L'utilisation de ces variables de session se fait ensuite via la variable $_SESSION:

$id = $_SESSION['achats']['id'];
$qte = $_SESSION['achats']['qte'];

Page 1 | 2

 
[ Xavier BorderieJDNet]
 
Accueil | Haut de page