2010-04-14 7 views
0

Ceci est ma première fois jouer à la fois ajax et des objets, donc s'il vous plaît allez-y doucement sur moiproblèmes avec instanciation d'objets dans les achats personnalisés PHP et Ajax panier

J'ai 3 pages qui composent le shopping testeur panier.

1) page avec les boutons 'remove' 'remove' et ajax pour appeler les fonctions PHP à la page 2. c'est la page utilisateur réelle avec la sortie HTML.

2) avec les appels de fonction PHP panier, reçoit $ _GET demandes de paiement ajax à la page 1 et appelle les fonctions de l'objet de panier de la page 3, renvoie les résultats à la page 1.

3) avec définition d'objet panier .

Voici le problème que je crois avoir. Actuellement, j'ai 'session_start()' sur les pages 1 & 2, et la définition du panier (pag 3) sur les pages 1 & 2. Je ne définis que '$ _SESSION [panier] = nouveau panier' à la page 2. Cependant, il semble que chaque fois que j'appuie sur une fonction ajax (par exemple, chaque fois que pg 2 recharge) il semble réécrire $ _SESSION ['cart'], donc il est toujours vide à chaque nouveau clic (même s'il affiche les résultats de ce clic)

Cependant, si je ne définit pas '$ _SESSION [panier] = nouveau panier' sur la page 2, je reçois une erreur:

Fatal error: main() [function.main]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "Cart" of the object you are trying to operate on was loaded before unserialize() gets called or provide a __autoload() function to load the class definition in /home3/foundloc/public_html/booka/carti.php on line 17

Toutes les suggestions? Comment puis-je arrêter de recréer mon panier chaque fois que ma page 2 (page de fonction du panier php) est appelée par ajax?

Répondre

0

Basé sur votre commentaire à alex' answer: vous devez inclure la définition de la classe Cart avant d'appeler session_start().

Vous voyez, lorsque vous appelez session_start() les données de session sont désérialisées et placées dans le hachage global $_SESSION. Par conséquent, il a besoin de définitions de classe externes au préalable.

+0

Merci beaucoup! Travaillé comme un charme. J'imagine que le Cart passe devant le cheval de temps en temps – Phil

+0

Lol, je suppose. :) Et vous êtes bienvenue. –

0

Pourriez-vous faire ceci?

session_start(); 
if (! isset($_SESSION['cart'])) { 
    $_SESSION['cart']= new Cart; 
} 
+0

merci ... essayé que tho. en train de le faire en haut de la page 2 « ;} autre { $ _SESSION [panier] = new Cart; echo "créé un chariot
"; } " ?> et il affiche que" le panier est défini ", et donne toujours l'erreur ci-dessus. – Phil