Fo0Zie
Messages postés95Date d'inscriptionlundi 11 février 2008StatutMembreDernière intervention 8 juin 2009
-
29 mars 2009 à 17:43
Fo0Zie
Messages postés95Date d'inscriptionlundi 11 février 2008StatutMembreDerniè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);
}
}
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 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.
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 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é
Fo0Zie
Messages postés95Date d'inscriptionlundi 11 février 2008StatutMembreDernière intervention 8 juin 20091 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é ...