Supprimer variable dans une session

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Supprimer variable dans une session

par Cyrano » 13 nov. 2006, 19:23

:mrgreen:

Re: Supprimer variable dans une session

par Hermès » 13 nov. 2006, 18:44

Par rapport à ce tuto justement, pourquoi n'y a-t-il pas cette méthode toute simple du unset() ?

Edit : j'ai rien dit, c'est en fait la méthode utilisée par la technique de Ripat dans le tuto.

par Ryle » 13 nov. 2006, 18:38

C'est assez récurrent de voir cette façon de gérer un panier, je ne sais pas si ça vient d'un tuto particulier, mais selon moi c'est peu pratique risqué de séparer les données id, qté et autre dans des tableaux qui n'ont rien avoir en se basant uniquement sur l'ordre des données pour les ré-associer - on l'espère - correctement...

En gros, chacun de tes articles se trouve discéminé dans les différents tableau à la même position. Si tu veux en supprimer un, il te faut donc déterminer sa position (supposons le 3ème) et effacer dans chaque tableau l'élément qui correspond :
$i = 2; // position 3 en partant de 0

unset($_SESSION['panier']['ref'][$i]); 
unset($_SESSION['panier']['id_produit'][$i]); 
unset($_SESSION['panier']['qte'][$i]); 
...
Il serait à mon avis bien plus judicieux d'utiliser l'id_produit ou la référence comme index et de créer un tableau associatif pour chaque article distinct
$_SESSION['panier'][$idProduit] = array ($ref, $qte, ...);
Il suffirait alors pour mettre à jour ou supprimer un article de connaitre son id, et de ne faire qu'un unset() sur celui-ci


Edit : Groumpf... grillé (et bien) pour la réponse, mais je maintient que ce principe est loin d'être judicieux :)

par Cyrano » 13 nov. 2006, 18:37

Tu nous diras si on peut mettre le sujet [Résolu], comme invité tu ne peux pas le faire toi-même, tu devrais t'inscrire, ça coute rien et tu pourras le faire toi-même par la suite.

par Valawa » 13 nov. 2006, 18:36

Merci, c'est ce que je cherchais.

par Cyrano » 13 nov. 2006, 18:32

Un tuto sur les paniers où tu vas trouver la réponse : ICI, regarde la partie "Supprimer un article"

Supprimer variable dans une session

par Valawa » 13 nov. 2006, 18:25

Bonjour,

Je viens de créer un caddie pour un site, afin d'y stocker des informations de commande.

Quand j'ajouter des produits, voici le code :
if(!isset($_SESSION['panier'])) 
{ 
    $_SESSION['panier'] = array(); 
    $_SESSION['panier']['ref'] = array(); 
    $_SESSION['panier']['id_produit'] = array(); 
    $_SESSION['panier']['qte'] = array(); 
    $_SESSION['panier']['taille'] = array(); 
    $_SESSION['panier']['couleur'] = array(); 
    $_SESSION['panier']['prix'] = array(); 
} 

/* Ici, on sait que le panier existe, donc on ajoute l'article dedans. */ 
$count = count($_SESSION['panier']['id_produit']); 
$select['ref']=$count+1;

array_push($_SESSION['panier']['ref'],$select['ref']); 
array_push($_SESSION['panier']['id_produit'],$select['id_produit']); 
array_push($_SESSION['panier']['qte'],$select['qte']); 
array_push($_SESSION['panier']['taille'],$select['taille']); 
array_push($_SESSION['panier']['couleur'],$select['couleur']); 
array_push($_SESSION['panier']['prix'],$select['prix']); 
Je peux afficher sans problème mon caddie :
<table>
  <tr bgcolor="#400A00">
    <td height="25"><strong>Produit</strong></td>
    <td height="25"><strong>Taille</strong></td>
    <td height="25"><strong>Couleur</strong></td>
    <td height="25"><strong>Qt&eacute;</strong></td>
    <td height="25"><strong>P.U.</strong></td>
    <td height="25"><strong>Total</strong></td>
    <td align="center"><strong>Enlever</strong></td>
  </tr>
<?
if (isset($_SESSION['panier']))
{
	$total_final=0;
	
	reset($_SESSION['panier']);
	
	$count = count($_SESSION['panier']['id_produit']); 
	for($i=0;$i<$count;$i++) 
	{
		$ref = $_SESSION['panier']['ref'][$i];
		$id_produit = $_SESSION['panier']['id_produit'][$i];
		$qte = $_SESSION['panier']['qte'][$i];
		$taille = $_SESSION['panier']['taille'][$i];
		$couleur = $_SESSION['panier']['couleur'][$i];
		$prix = $_SESSION['panier']['prix'][$i];
		$total_ligne = $qte*$prix;
		
		if ($taille=="0")
		{ $taille = "UNIQUE"; }
		
		$req1=mysql_query("SELECT * FROM b_prod where id_produit=$id_produit");
		while ($row1=mysql_fetch_array($req1))
		{ $produit=$row1["produit"]; }
		
		echo '<tr>';
		echo '<td>'.$produit.'</td>';
		echo '<td>'.$taille.'</td>';
		echo '<td>'.$couleur.'</td>';
		echo '<td>'.$qte.'</td>';
		echo '<td>'.$prix.' €</td>';
		echo '<td>'.$total_ligne.' €</td>';
		echo '<td><a href="panier-supprimer.php?id='.$ref.'">Enlever</a></td>';
		echo '</tr>';
		
		$total_final=$total_final+$total_ligne;
	}

  echo '<tr>';
  echo ' <td colspan="4" align="right"></td><td><b>TOTAL</b></td>';
  echo '<td>'.$total_final.' €</td>';
  echo '</tr>';

}
else
{
	echo '<tr><td colspan="7" height="100" align="center"> - Votre panier est vide - </td></tr>';
}

?>
</table>
Mais maintenant, je suis embêté, car je ne sais pas comment supprimer un produit de mon caddie par exemple.

J'ai bien essayé de faire :
unset($_SESSION['panier']['ref'])
mais j'ai l'impression qu'il ne suprimer que la référence et pas les indications liées à la taille, couleur...

Bref, comment je fais pour supprimer "l'intégralité" de ma ligne dans mon tableau de session ?

Je sais, certains vont hurler, mais j'ai une contrainte de temps et je ne m'en sors pas.

Merci par avance !