dldstyle Posté 17 Août 2006 Posté 17 Août 2006 Salut à tous les pro PHP, je me tourne vers vous pour m'aider à résoudre mon problème de caddie. J'ai réussi à supprimer les produits de mon caddie par contre il y a un bug quand celui ci est vide. Je ne peux plus en ajouter ! Je voudrai vérifier que le panier soit vide, qu'il n'y ait aucun produit avant de le supprimer avec un unset($_SESSION['panier']). Mon code : <?php elseif (($_GET['action'] == "del")) // on supprime le produit { foreach($_SESSION['panier'] as $key => $array) { if ($array['prod'] == $_GET['id']) { unset($_SESSION['panier'][$key]); } } if (!isset($_SESSION['panier'])) { echo "<p>IL EST VIDE CE PANIER B***** donc je peux faire session_unset() et session_destroy() </p>"; } else { echo "<p>Normalement il n'est pas vide</p>"; } } ?> Vous avez une idée please ??!!
manmachine Posté 19 Août 2006 Posté 19 Août 2006 Ton problème vient tu fait que tu fais des unset sur les clés du tableau unset($_SESSION['panier'][$key]); donc ta variable $_SESSION['panier'] est elle toujours présente . donc lorsque tu teste sa présence if (!isset($_SESSION['panier'])) { echo "<p>IL EST VIDE CE PANIER B***** donc je peux faire session_unset() et session_destroy() </p>";} else { echo "<p>Normalement il n'est pas vide</p>";} ta variable existe bien il te répond s donc " Normalement il n'est pas vide " alors qu'il l'est peut etre . tu dois donc tester si il sagit d'un tableau et la taille de delui ci. if ( is_array($_SESSION['panier']) && sizeof($_SESSION['panier']) > 0 ) { echo "<p>Normalement il n'est pas vide</p>"; } else { echo "<p>IL EST VIDE CE PANIER B***** donc je peux faire session_unset() et session_destroy() </p>";}
captain_torche Posté 21 Août 2006 Posté 21 Août 2006 On pourrait aussi tester avec un empty($_SESSION['panier']), qui nous ressortirait true s'il ne contient plus d'élément.
manmachine Posté 21 Août 2006 Posté 21 Août 2006 (modifié) Oui le empty peut faire l'affaire mais vu que dldstyle ne nous présente qu'un petit bout de code je ne sais pas exactement comment il traite cette variable donc je sécurise le test au mieux . il faudrait avoir plus d'infos sur le code de dldstyle pour déterminé si un empty suffit Modifié 21 Août 2006 par manmachine
dldstyle Posté 21 Août 2006 Auteur Posté 21 Août 2006 Salut à vous, je n'ai pas encore pris le temps de tester vos solutions, étant sur un autre travail charrette Je vous livre mon code : <?phpif(isset($_GET['action']) && isset($_GET['id'])) { $panieractif=1; if(isset($_SESSION['panier']) && is_array($panier)) // le panier existe déjà { $nbprod = count($panier); if ($_GET['action'] == "add") // on ajoute le produit { $break=0; // permet de squizzer la boucle ajout d'une quantité / ligne si +ieurs produits dans le panier foreach($_SESSION['panier'] as $key => $array) { if ($array['prod'] == $_GET['id']) { $newQte = ($_GET['qte'] + $array['qte']); $_SESSION['panier'][$key]['qte'] = $newQte; $ajout = 0; $break=1; } elseif ($break==0)// n'existait pas, on le rajoute { $ajout = 1; } } if ($ajout == 1) { array_push($panier,array("prod" => $_GET['id'],"qte" => $_GET['qte'])); } } elseif (($_GET['action'] == "del")) // on supprime le produit { foreach($_SESSION['panier'] as $key => $array) { if ($array['prod'] == $_GET['id']) { unset($_SESSION['panier'][$key]); } } if (!isset($_SESSION['panier'])) { echo "<p>IL EST VIDE CE PANIER B***** donc je peux faire session_unset() et session_destroy() </p>"; } else { echo "<p>Normalement il n'est pas vide</p>"; } } // fin ajout de code elseif ($_GET['action'] == "mod") // on modifie la quantité { $refsup = $_GET['refsup']; foreach($_GET['refsup'] as $key => $keysup) { // je ne sais pas encore comment faire } } else // couille dans le potage { $message = "Une erreur s'est produite, merci de renouveller votre action."; } } else // le panier n'existe pas { $_SESSION['panier'][] = array("prod" => $_GET['id'],"qte" => $_GET['qte']); } } ?> Merci par avance, vous m'enlèveriez une grosse épine du pied
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant