Panier : Pb de quantité

Fo0Zie Messages postés 95 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 8 juin 2009 - 29 mars 2009 à 17:43
Fo0Zie Messages postés 95 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 8 juin 2009 - 30 mars 2009 à 20:42
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 bien, jusqu'au moment ou je souhaite supprimer un article.
Je m'explique, si j'ai une quantité supérieur à 1 d'un article de mon panier et que je clique sur supprimer (censé me supprimer qu'1 article) il me supprime tous les articles de la référence sélectionné.

Quand j'ai regardé mon code cela été normal, mais en faite je n'arrive pas à mettre en place cette condition qui ai que si ma qté est > 1 alors je supprime qu'un seul article.

voici ma fonction supprimer article :

function supprimerArticle($numProduit)
{
    if(count($_SESSION['panier'][$numProduit]) > 1)
    {
        $_SESSION['panier'][$numProduit] --;
    }   
    else
    {
        // On crée un panier "tampon" qui va être notre panier sans les éléments à supprimer
        $tmp=array();
        $tmp['numProduit'] = array();
        $tmp['libelleProduit'] = array();
        $tmp['qteProduit'] = array();   
        $tmp['prixProduit'] = array();
        // On remplit ledit panier "tampon"
        for($i = 0; $i < count($_SESSION['panier']['numProduit']); $i++)
        {
        // On transfert tous, sauf l'article à supprimer
            if ($_SESSION['panier']['numProduit'][$i] !== $numProduit)
            {
                array_push($tmp['numProduit'],$_SESSION['panier']['numProduit'][$i]);
                array_push($tmp['libelleProduit'],$_SESSION['panier']['libelleProduit'][$i]);
                array_push($tmp['qteProduit'],$_SESSION['panier']['qteProduit'][$i]);   
                array_push($tmp['prixProduit'],$_SESSION['panier']['prixProduit'][$i]);
            }
        }
        //    On réaffecte notre panier via les valeurs du panier tampon que l'on supprime par la suite
        $_SESSION['panier'] =  $tmp;
        unset($tmp); 
    }         
}

Merci d'avance pour votre aide

4 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
29 mars 2009 à 20:43
Salut,

Je ne connais pas l'operateur !==
le problème vient peut etre de là

Je connais === mais pas le tient.

Si tu es en PHP5 (désolé je ne pratique plus) il serait plus intéressant de passer par des classes que par les arrays.
Tu as les tableaux associatifs aussi qui peuvent rendre le code plus maintenable.

Bon courage
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
29 mars 2009 à 22:00
!== c'est une comparaison fortement typee
= aussi

$a !$b c'est comme gettype($a) gettype($b) && $a == $b
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
30 mars 2009 à 19:53
Salut,

J'ai juste jeter un oeil rapide (et ça fais mal, j'lai pas r'trouvé)
Je dis peut être une connerie, mais j'ai l'impression qu'il y a un gros problème de logique et beaucoup d'erreurs dans ton code.
Ta fonction devrait se résumer à ça :
function supprimerArticle($indexPanier) {
    foreach ($_SESSION['panier'] as $k= >$v) {
        unset($_SESSION['panier'][$k][$indexPanier]);
    }
}
Cela implique bien sur que tu passe l'index du produit concerné à ta fonction (le "$i" dans ton code)
Je ne connais pas ton code, mais c'est en principe très simple à réaliser puisque l'utilisateur clique sur le produit qu'il souhaite supprimer (tu mets alors l'index dans le value du champ)

Par ailleurs :
if(count($_SESSION['panier'][$numProduit]) > 1)
=>
Ne devrait sans doute pas exister, le numProduit devrait toujours être unique vu que tu as un tableau quantité

Cordialement,

Kohntark -
0
Fo0Zie Messages postés 95 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 8 juin 2009 1
30 mars 2009 à 20:42
Ah oui peut-être, mais je ne vois pas à quoi correspond l'index du panier.
"Cela implique bien sur que tu passe l'index du produit concerné à ta fonction (le "$i" dans ton code)" => je ne sais comment faire.

Sinon j'ai suivi le tuto de mon paniericiet pour le test if(count($_SESSION['panier'][$numProduit]) > 1) j'étais vraiment à coté ...
0
Rejoignez-nous