Page 1 sur 1

Problème de fonctions dans un panier utilisant les sessions!

Posté : 14 janv. 2011, 16:07
par djgje
Bonjour à tous!
Je suis débutant en php et je fais un site d'e-commerce ou j'utilise un panier.
Mon panier fonctionne avec les sessions, mais je n'arrive pas à ajouter mes produits dedans!
Voici donc pour commencer l'appel de la fonction d'ajout:
ajouterArticle($id,$q);
Je ne pense pas avoir de problème à ce niveau (en même temps si je poste ici c'est parce que je ne trouve vraiment pas!).
Voici maintenant la fonction ajouter proprement dite:
function ajouterArticle($id,$qte){

   //Si le panier existe
   if (creationPanier() && !isVerrouille())
   {
      //Si le produit existe déjà on ajoute seulement la quantité
      $positionProduit = array_search($id,  $_SESSION['panier']['id']);

      if ($positionProduit !== false)
      {
         $_SESSION['panier']['qteProduit'][$positionProduit] += $qte ;
      }
      else
      {
      	 $infosproduit_query = sqlquery("SELECT produit_id, produit_marque, produit_modele, produit_prix FROM produits WHERE produit_id='".$id."' ",1);
         $nom = $infosproduit_query['produit_marque']." - ".$infosproduit_query['produit_modele'];
         $prix = $infosproduit_query['produit_prix'];
         //Sinon on ajoute le produit
         array_push( $_SESSION['panier']['id'],$id);
         array_push( $_SESSION['panier']['libelleProduit'],$nom);
         array_push( $_SESSION['panier']['qteProduit'],$qte);
         array_push( $_SESSION['panier']['prixProduit'],$prix);
         $informations = Array(false,
								'Produit ajouté au panier!',
								'Le produit '.$nom.' a été correctement ajouté au panier!</span>.',
								'',
								ROOTPATH.'/produits/produitbyid.php?id='.$id.'',
								2
								);
		 require_once('information.php');
		 exit();
      }
   }
   else
   echo "Un problème est survenu veuillez contacter l'administrateur du site.";
}
Et maintenant les fonctions qui peuvent être appelées par ajouterArticle():
function creationPanier(){
   if (!isset($_SESSION['panier'])){
      $_SESSION['panier']=array();
      $_SESSION['panier']['id'] = array();
      $_SESSION['panier']['libelleProduit'] = array();
      $_SESSION['panier']['qteProduit'] = array();
      $_SESSION['panier']['prixProduit'] = array();
      $_SESSION['panier']['verrou'] = false;
   }
   return true;
function isVerrouille(){
   if (isset($_SESSION['panier']) && $_SESSION['panier']['verrou'])
   return true;
   else
   return false;
}
Il reste sqlquery() mais cette fonction fonctionne sans problème, elle sert autre part!
Voilà, j'espère avoir été assez complet!
J'espère que quelqu'un ici pourra m'aider! Merci d'avance!

Jérôme

Re: Problème de fonctions dans un panier utilisant les sessions!

Posté : 14 janv. 2011, 16:49
par moogli
salut,

qu'entend tu pas je n'arrive pas a ajouter les produits ?
- Est ce que la fonction retourne une erreur ?
- Est ce que les tableaux existent bien en session
- Est ce que l'un des tests échoue ?

pourquoi avoir fait si compliqué alors que tu pouvais tous indexer par rapport à $id qui devrait être unique ?
par exemple
<?php
$_SESSION['panier'][ $id ]= array('prix' => 412,'libellé' => 'ça c est le produit qui déchire tout !','quantité'=>28,'verrou'=>false);
// etc
?>
@+

Re: Problème de fonctions dans un panier utilisant les sessions!

Posté : 14 janv. 2011, 16:50
par xTG
As-tu un session_start() au début de ta page ?
Les erreurs sont-elles activées pour les requêtes ? (afin de voir si c'est pas l'insertion en base qui pose problème)

Re: Problème de fonctions dans un panier utilisant les sessions!

Posté : 14 janv. 2011, 17:05
par djgje
Merci pour vos réponses!
Et bien jusqu'à tout à l'heure, la fonction ne retournait aucune erreur, la page d'infos s'affichait puis ca revenait sur le produit comme je voulais!
Mais quand je voulais afficher le panier il était toujours vide...
Maintenant j'ai bidouiller, c'est le code que vous avez vu. Celui la il ne fait rien, quand je clique sur le lien qui appelle la fonction, page blanche...
J'ai bien un session_start() sur chaque page de mon site. Je ne pense pas que cela vienne de la requete sql car j'arrivais a afficher des infos de celles-ci dans ma page informations.php...
Pour ce qui est du coté compliqué, c'est ma première création en php et j'utilise ce que je découvre! J'adapte du code de temps en temps aussi!
A bientôt pour une solution j'espère!
++

Jérôme

Re: Problème de fonctions dans un panier utilisant les sessions!

Posté : 14 janv. 2011, 17:10
par xTG
Que donne :
echo"<pre>";
var_dump($_SESSION);
echo"</pre>";
En le mettant à la fin du script et un autre après un changement de page. :)

Re: Problème de fonctions dans un panier utilisant les sessions!

Posté : 14 janv. 2011, 17:22
par djgje
Merci mais tu pourrais me préciser à la fin de quel script? Que je ne fasse pas d'erreurs!
Et aussi je ne vois pas top où après un changement de page? Désolé de mon incompréhension!
Merci!

Re: Problème de fonctions dans un panier utilisant les sessions!

Posté : 14 janv. 2011, 18:26
par xTG
Tu as une page php englobant tous tes systèmes non ? (include, require, ect)
Tu mets le script d'affichage tout en bas en dernière instruction.

Quand au changement de page c'était pour savoir si lorsque tu changeais de page la session était perdue ou non.
Donc si tu as un fichier index.php qui inclut tous les systèmes (reconnaissance de la page via une variable dans l'url) dans ce cas tu n'as pas besoin vu que le premier ajout sera valide en cas de changement de page.