Variable de session qui disparait [Résolu]

cs_ov3rdoze 414 Messages postés lundi 19 juillet 2004Date d'inscription 23 septembre 2014 Dernière intervention - 1 févr. 2009 à 10:58 - Dernière réponse : cs_ov3rdoze 414 Messages postés lundi 19 juillet 2004Date d'inscription 23 septembre 2014 Dernière intervention
- 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
cs_ov3rdoze 414 Messages postés lundi 19 juillet 2004Date d'inscription 23 septembre 2014 Dernière intervention - 1 févr. 2009 à 11:06
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);
 }

Merci cs_ov3rdoze 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes 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.