cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014
-
1 févr. 2009 à 10:58
cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014
-
1 févr. 2009 à 11:06
Bonjour à tous.
Je souhaiterais ajouter un système de panier sur un site. J'ai donc fait une classe panier aui à priori fonctionne.
A l'arrivée sur le site, j'instancie cette classe, puis serialise l'instance dans $_SESSION['p'].
J'utilise XmlHttpRequest pour qu'à tout moment l'utilisateur puisse afficher le nombre de produits dans son panier : j'appelle un fichier qui récupère le contenu de $_SESSION['p'], le déserialise et en affiche le nombre de produits. Tout ceci semble fonctionner. Quand j'ajoute un produit au panier, puis que je fais afficher le nombre de produits, c'est OK.
Cependant, si je change de page, le panier "se vide". On dirait que $_SESSION['p'] disparait.
A l'arrivée sur le site :
session_start();
require "ressources/web/panier_class.php";
$caddie = new Panier();
$p = serialize ($caddie);
session_register ($p);
Ajout d'un produit au panier :
session_start();
require "panier_class.php";
$caddie = unserialize ($_SESSION['p']);
$caddie->ajouter ($_POST['$id'], $_POST['qte']);
$_SESSION['p'] = serialize ($caddie);
Affichage du nombre de produits :
session_start();
require "panier_class.php";
$caddie = unserialize ($_SESSION['p']);
$tmp = $caddie->quantite ("");
if ($tmp)
if ($tmp > 1) echo "Votre panier contient
".$tmp." articles";
else echo "Votre panier contient
1 article";
else echo "Votre panier est vide";
$_SESSION['p'] = serialize($caddie);
Pour résumer : A chaque fois que je fais afficher le nombre de produits, ce nombre est récupéré dans ma variable de session, donc celle-ci existe bien. Alors pourquoi disparait-elle quand je change de page?
cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014 1 févr. 2009 à 11:06
Comme quoi ça aide d'exprimer son problème
A chaque changement de page, une nouvelle instance de panier était créée et écrasait l'ancienne.
Solution (dans le cas improbable où ça arriverait à d'autres) :
if (!isset ($_SESSION['p'])) {
$caddie = new Panier();
$p = serialize ($caddie);
session_register ($p);