Aller au contenu

Supprimer session caddie si caddie vide ?


dldstyle

Sujets conseillés

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 ??!! :blush:

Lien vers le commentaire
Partager sur d’autres sites

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>";
}

Lien vers le commentaire
Partager sur d’autres sites

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é par manmachine
Lien vers le commentaire
Partager sur d’autres sites

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 :

<?php

if(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 :thumbsup:

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...