begin process at 2012 05 31 05:33:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Panier : Pb ajout d'articles


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Panier : Pb ajout d'articles

dimanche 22 mars 2009 à 11:54:59 | Panier : Pb ajout d'articles

Fo0Zie

Bonjour à tous,

Voici mon problème : je dispose d'un panier pour mon site de vente en ligne. Mon problème est lorsque je clique sur "Ajouter un produit" la première fois il me l'ajoute correctement au panier, si je souhaite l'ajouter une 2eme fois, il me l'ajoute à nouveau au lieu de modifier la quantité de l'article.
Et cela ainsi de suite.
Par contre si je choisi un deuxième produit à ajouter au panier, tout se passe comme il faut si je l'ajoute plusieurs fois, il modifie bien ma quantité.

Je ne vois pas ce que cela pourrait être ...

Merci d'avance

Voila ma fonction pour ajouter un article au panier.

// ------------ Ajouter un article ------------
function ajouterArticle($numProduit,$libelleProduit,$qteProduit,$prixProduit)
{
    if (creationPanier()) // Si mon panier existe
    {
    $positionProduit = array_search($numProduit,  $_SESSION['panier']['numProduit']);
       
      if ($positionProduit == true) // Si le produit existe déjà on augmente sa quantité
      {
       $_SESSION['panier']['qteProduit'][$positionProduit] += $qteProduit ;
      }
      else // Sinon on l'ajoute au panier
      {
        array_push($_SESSION['panier']['numProduit'],$numProduit);
        array_push($_SESSION['panier']['libelleProduit'],$libelleProduit);
        array_push($_SESSION['panier']['qteProduit'],$qteProduit);
        array_push($_SESSION['panier']['prixProduit'],$prixProduit);
      }
    }
}
dimanche 22 mars 2009 à 14:31:14 | Re : Panier : Pb ajout d'articles

kohntark

Membre Club
Salut Foozie,


Déjà ça ce n'est pas une très bonne idée :
if ($positionProduit == true)

et puis :
$_SESSION['panier']['qteProduit'][$positionProduit] += $qteProduit ;
=>
n'existe pas, $_SESSION['panier']['qteProduit'] n'est pas un tableau

if (creationPanier()) // Si mon panier existe
=> il faudrait voir ta fonction creationPanier(), mais je doute qu'elle ait bien sa place ici. Selon le contexte il est peut être plus simple de créer le panier systématiquement, même si l'utilisateur ne s'en sert pas.

Pourquoi ne pas avoir un panier sous cette forme plutôt :
$_SESSION['panier']['numProduit'] = array('libelleProduit'=>'', 'qteProduit'=>0, 'prixProduit'=>0);
Ainsi tu fais un array_key_exists et tout devient plus simple, parce que là je ne vois pas comment tu peux retrouver, par exemple, à quel produit appartient qteproduit.

Ca donnerait un truc du genre :

function ajouterArticle($numProduit,$libelleProduit,$qteProduit,$prixProduit)
{
  if (creationPanier()) // a voir
    {
    $positionProduit = array_key_exists($numProduit,  $_SESSION['panier']);
       
      if (true === $positionProduit)
      {
         $_SESSION['panier'][$numProduit]['qteProduit']+= $qteProduit;
       } else {
          $_SESSION['panier'][$numProduit] = array();
          array_push($_SESSION['panier']['numProduit']['libelleProduit'], $libelleProduit);
          array_push($_SESSION['panier']['numProduit']['qteProduit'], $qteProduit);
          array_push($_SESSION['panier']['numProduit']['prixProduit'], $prixProduit);
      }
    }
}


Bien sur c'est largement incomplet, mais ça devrait fonctionner.


Cordialement,


Kohntark -

dimanche 22 mars 2009 à 14:34:08 | Re : Panier : Pb ajout d'articles

Fo0Zie

Merci de ta réponse !

Voici ma fonction de création de panier :
function creationPanier()
{
    $ret=false;
    // On vérifie si le panier existe
    if (isset( $_SESSION['panier']))
    {
     $ret = true;
    }
    else // Sinon on le crée
    {
        // Initialisation du panier
      $_SESSION['panier']=array();
      // Subdivision du panier
      $_SESSION['panier']['numProduit'] = array();
      $_SESSION['panier']['libelleProduit'] = array();  
$_SESSION['panier']['qteProduit'] = array();     
      $_SESSION['panier']['prixProduit'] = array();
      $ret=true;
    }
    // ret vaut true lorsque le panier existe sinon false
    return $ret;
}

Je vais tester comme tu fais.
dimanche 22 mars 2009 à 14:39:25 | Re : Panier : Pb ajout d'articles

Fo0Zie

Permet moi de te poser une question : Que signifie "      if (true === $positionProduit)" ?
dimanche 22 mars 2009 à 15:35:59 | Re : Panier : Pb ajout d'articles

kohntark

Membre Club
Réponse acceptée !
... sorry, j'ai raconté une ou deux conneries dans mon précédent post ...lu trop vite.

Le "seul" pb qu'il y a dans ton code c'est le
      if ($positionProduit == true)
Pourquoi ?
Parce que array_search retourne la clé de la valeur trouvée, ou false si elle n'est pas dans le tableau. Elle ne retourne jamais true.
Le problème est que ton premier produit ajouté à pour clé : 0, et que 0 == false
Par exemple ces conditions renvoient vrai :
if (true == 1)
if (false == 0)
par contre ces conditions ne sont pas vérifiées:
if (true === 1)
if (false === 0)

(j'espère être clair)

Donc if ($positionProduit == true) => faux pour ton premier ajout (clée 0), un nouvelle entrée est donc créée

Il te suffit donc de remplacer cette condition par
if (false !== $positionProduit)

Cordialement,

Kohntark -

dimanche 22 mars 2009 à 15:39:45 | Re : Panier : Pb ajout d'articles

Fo0Zie

Merci merci.

J'avais pas du tout penser à ça. Tu as été très clair, je vais de ce pas modifier ma condition.

Merci encore, ça fait des heures que je cherchais mon erreur.
dimanche 22 mars 2009 à 15:42:23 | Re : Panier : Pb ajout d'articles

kohntark

Membre Club
Pour répondre à ta dernière question :
Contrairement à array_search, array_key_exists return true si la clé existe, false sinon.


Kohntark -

dimanche 22 mars 2009 à 15:52:53 | Re : Panier : Pb ajout d'articles

Fo0Zie

Merci kofntark, pour ces explications.

Ca fonctionne impect.


Cette discussion est classée dans : ajouter, session, panier, numproduit, qteproduit


Répondre à ce message

Sujets en rapport avec ce message

Panier : Pb de quantité [ par Fo0Zie ] Bonjour à tous les codeurs !Voilà mon problème que j'arrive en vain à résoudre. J'utilise un panier pour un mini site de vente, il fonctionne très bie Problème de serialization - passage par référence ? [ par Evangun ] Bonjour à tous,j'ai un objet que je souhaite mettre en session sous forme sérialisée, mais le problème est le suivant :    $panier = unserialize($_SES Problème Session et array [ par taxitat ] Bonjour à tous,J'essaye de créer un panier d'achat. J'en suis au stade expérimental et pour ne pas me casser la tête, à ce stade je "remplis" mon pani probleme syntaxe ecriteu BDD [ par ju0123456789 ] Bonjour, j'ai les produits du panier qui s'affichent sur ma page "modes_paiement.php" , le nombre d'articles et ainsi que le prix total, j'ai ma table Pseudo frames et panier, perte de session... [ par alphacrash ] Bonjour !Voila mon soucis, je pense assez connu, j'utilise les pseudo frames donc une page index qui contient au debut un session_start() et cette pag Variable de session qui disparait [ par ov3rdoze ] 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 s tableau array et session panier? [ par newlc ] Salut à tous,je cherche à pouvoir ajouter une valeur a chaque fois que l'utilisateur entre une info dans un champs de saisie simple mais apres chaque Problème de panier avec $_SESSION [ par ragmo ] Bonjour à tous,Depuis ce matin j'ai un problème sur un ensemble de scripts de gesion de panier qui marchait [très] bien. Le message est : "Cannot use demande aide pour Modification de la quantité d'un panier virtuel [ par geogeo62118 ] Bonjour, je souhaiterai obtenir de l'aide pour la modification de quantité d'un panier virtuel.Mon problème est que j'ai mis en place mon test pour la HELP PLEASE !!!! problème de panier... [ par frederic66 ] Bonjour,mon site a été redirigé sur un nouveau serveur qui utilise PHP4, MySQL - 5.0.51a-log. depuis, mon panier ne fonctionne plus correctement... on


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales