Variable de session qui disparait [Résolu]

Messages postés
414
Date d'inscription
lundi 19 juillet 2004
Dernière intervention
23 septembre 2014
- - Dernière réponse : cs_ov3rdoze
Messages postés
414
Date d'inscription
lundi 19 juillet 2004
Dernière intervention
23 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?

Quelqu'un aurait une idée?
Merci d'avance
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
414
Date d'inscription
lundi 19 juillet 2004
Dernière intervention
23 septembre 2014
3
Merci
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);
 
     $_SESSION['p'] = serialize ($caddie);
 }

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 98 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ov3rdoze

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.