Supprimer la valeur d'une variable de session

Résolu/Fermé
elaene - 4 mars 2011 à 10:19
Vardok Messages postés 359 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 24 octobre 2014 - 4 mars 2011 à 14:05
Bonjour,
Je fais un site qui fonctionne avec des sessions pour enregistrer les paniers des clients et les envoyer ensuite par mail. J'ai une variable $_SESSION['Panier'] qui contient les informations suivantes sous forme de tableau : 'ref', 'refProduit', 'nom', 'prix', 'libelleOption', 'qte', 'qteMin'. Tout fonctionne avec ces panier (ajout, envoi par mail...) sauf la suppression;
Je souhaite que les clients puissent supprimer un article de leur panier. Pour cela, dans le panier, à chaque ligne désignant un article, il y a une croix qui donne sur un lien prenant en paramètre la ref du produit (nombre aléatoire donné au produit à son ajout dans le panier qui me permet d'identifier le produit).
Sur cette nouvelle page je souhaite pouvoir faire un unset pour supprimer uniquement le produit correspondant à la ref donnée en paramètre. Le code de cette page : (les unset sont en commentaires et ne fonctionnent pas mais en gros c'est qque chose comme ça que je veux, enfin si c'est possible!)


if(isset($_GET["id"])) 
{
	$id = $_GET['id'];
	foreach($_SESSION['Panier'] as $panier)
	{
		if ($panier['ref'] == $id)
		{
			//unset($_SESSION['Panier']['ref']);
			//unset($_SESSION['Panier']['ref'][$id]);
			//unset($_SESSION['Panier'][$id]);
			//unset($_SESSION['Panier']);
			//unset($panier['ref']);
		}
	}
}


Voilà, peut-être que je ne m'y prend pas de la bonne façon ou qu'il y a une manière plus simple de le faire mais je n'ai pas trouvé d'infos sur le net donc j'espère que quelqu'un pourra m'aider. A noter que je pourrais mettre la valeur de la variable à null, mais cela signifierait que c'est le unset qui ne fonctionne pas, alors que c'est la récupération de la bonne variable qui foire je pense. Enfin voilà =)
A voir également:

8 réponses

Vardok Messages postés 359 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 24 octobre 2014 133
4 mars 2011 à 11:14
unset($_SESSION['Panier']['ref']) supprimerai la variable ref dans ta session panier. Or ton tableau ne s'appelle pas ref...
Essai de faire $_SESSION['Panier']['ref'] = tonTableau mais j'ai un doute.
Je suis désolé je n'ai pas d'environnement php "sur moi" et c'est le java le plus frai dans ma tete ^^
Mais on va essayer de résoudre ton probleme.
1
Vardok Messages postés 359 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 24 octobre 2014 133
Modifié par Vardok le 4/03/2011 à 10:27
Salut,
J'avais mal lu dsl...je cherche ca
Je que l'homme de la situation. Je que dossier bleu et vous sur une centaine de tableaux très clairs. Vous semaine prochaine et sans faute. Je tellement sur vous...
Je clair Luc ne pas ?
0
Vardok Messages postés 359 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 24 octobre 2014 133
4 mars 2011 à 10:32
Peux tu partager le script où tu "remplis" ton panier stp.
Quelle est l'erreur qui est affichée quand tu essai de supprimer un article ? (si erreur il y a ^^)
0
Alors si je mets unset($_SESSION['Panier']);, ça me supprime tout le panier, unset($panier); ne supprime rien tout comme unset($_SESSION['Panier']['ref']); et la plupart des autres. En gros ça ne fonctionne pas mais pas de message d'erreur...
Là où je remplis le panier;
$qte = $_POST['qte']; 
$refProduit = $_POST['refProduit']; 
$qteMin = $_POST['qteMin']; 
$prix = $_POST['prix']; 
$nom = $_POST['nom']; 
$libelleOption = $_POST['libelleOption']; 

$_SESSION['Panier'][] = array( 
'ref' => rand(1,100000), 
'refProduit' => $refProduit, 
'nom' => $nom, 
'prix' => $prix, 
'libelleOption' => $libelleOption, 
'qte' => $qte, 
'qteMin' => $qteMin 
);  
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pas grave, merci d'au moins essayer de m'aider :)
Je ne comprends pas ce que tu veux dire par "$_SESSION['Panier']['ref'] = tonTableau"
En plus, à chaque fois que je veux parcourir mon tableau panier ou l'utiliser en dehors de ma page panier, ça me dit variable indéfinie ou je sais pas quoi et impossible de modifier les valeur de ma variable de session, tout comme de les supprimer...
0
Vardok Messages postés 359 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 24 octobre 2014 133
4 mars 2011 à 11:42
Essai ca :
Pour remplir ton panier

$qte = $_POST['qte']; 
$refProduit = $_POST['refProduit']; 
$qteMin = $_POST['qteMin']; 
$prix = $_POST['prix']; 
$nom = $_POST['nom']; 
$libelleOption = $_POST['libelleOption']; 

$_SESSION['Panier'][$refProduit] = array(
'refProduit' => $refProduit, 
'nom' => $nom, 
'prix' => $prix, 
'libelleOption' => $libelleOption, 
'qte' => $qte, 
'qteMin' => $qteMin 
);  


et pour supprimer le produit dont l'id est passé en paramettre

if(isset($_GET["id"])) 
{
	$id = $_GET['id'];
        unset($_SESSION['PANIER'][$id])
}



Je ne suis pas sur que ca marche mais tu peux essayer.


0
OK je vais tester. Mais la ref d'une variable panier ne peut pas être la ref produit, c'est pour ça que j'avais mis un nombre aléatoire; en ajoutant un produit dans le panier, on lui choisit une quantité et une option différente donc identifier la variable par la seule référence produit ne suffit pas, l'identifiant doit être différent pour chaque produit ajouté, même si c'est le même produit car l'option peut être différente, ce qui en fait un produit "différent" aussi. Enfin à la rigueur on s'en fiche mais c'était pour l'explication ^^ Je vais tester
0
Vardok Messages postés 359 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 24 octobre 2014 133
Modifié par Vardok le 4/03/2011 à 11:56
c'est d'accord ^^ mais dans ce cas là, ta clé primaire devrai plutot être refProduit+refOption.
Mais peut importe ca marchera comme dis.
Ainsi tu pourrais controler qu'il n'existe pas deux produit identique avec la même option...
0
je le contrôle déjà au niveau de l'ajout dans le panier. Si le produit ajouté a la même référence produit et la même option qu'un produit déjà existant dans le panier, alors j'ajoute la nouvelle quantité de ce produit à celui qui existait déjà, et je n'ai jamais de doublon produit + option :)
Disons que c'est plus simple pour moi, à condition de ne pas tombé sur le même nombre aléatoire dans la référence de la variable ^^
0
et.... *roulements de tambours* *tatintintin*
Ca fonctionne!!! Voilà mon code d'ajout ;

$ref = rand(1,100000);
$_SESSION['Panier'][$ref] = array(
'ref' => $ref,
'refProduit' => $refProduit, 
'nom' => $nom, 
'prix' => $prix, 
'libelleOption' => $libelleOption, 
'qte' => $qte, 
'qteMin' => $qteMin 
); 


Et la suppression comme tu m'avais dit. J'ai enregistrer la ref de la variable dans la variable pour pouvoir la retrouvée et voilà! Bon l'utilisation de nombre aléatoire c'est un peu un système D mais ça marche, à condition de ne pas en avoir 2 identiques ^^'
Merci bcp pour ton aide en tout cas !
0
Vardok Messages postés 359 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 24 octobre 2014 133
4 mars 2011 à 12:00
Génial ^^ Je suis heureux de voir qu'il me reste encore un peu de php dans ma tete ^^
Pense au commentaire que je t'ai mis plus haut et vois à mettre les deux en clé primaire...
Si tu as encore besoin d'aide, maintenant que je connais le projet ^^
Je suis moi même coincé sur un truc donc j'ai tout mon temps pour aider les autres ^^
Mp moi si tu veux d'autre aides car je ne vais pas checker tous les posts...
0
ok c'est sympa! Ben là j'avais plusieurs autres problèmes tous résolus en 2 min alors que je bloquais dessus depuis des lustres... ^^ donc au niveau des sessions normalement tout est bon!
Bonne chance pour ton projet, moi personnellement en java je n'y connais rien!!
0
Vardok Messages postés 359 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 24 octobre 2014 133
4 mars 2011 à 14:05
C'est gentil pour le JAVA mais actuellement je n'en fais pas. C'est ce que j'aime c'est tout ^^
L'entreprise où je suis actuellement est plutôt spécialisée en progiciel genre SAP donc => pas de code :s
0