Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/02/2011, 15h43   #1
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
Par défaut Panier:ajout article déjà présent

Bonjour à tous,

je butte sur le problème suivant. J'ai un panier dans lequel j'ajoute des articles lorsque l'utilisateur le demande. Tant que l'article n'est pas encore présent dans mon panier ça va.

Ce que je voudrais arriver à faire c'est que je parcours mon panier est si il trouve la meme référence d'article il met à jour la quantité (=$ancienne_quantite+$nouvelle_quantité),mais je n'y arrive pas. J'ai fait pour cela une boucle qui parcours mon panier. Si il ne trouve pas l'article dans le panier, il l'ajoute comme un nouvel article.

J espère que c'est claire? Voici ma fonction:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
function ajout_produit($new_id, $led_id, $quantite)
	{
	// => On compte le nbre d'articles différents dans le panier
	$nb_articles	= count($_SESSION['caddie']['id']);
	// => Initialisation de la variable retour
	echo $nb_articles;
	$ajoute=false;
	// => Recherche des ref de l'article dans la db
	$sql_ref=mysql_query("SELECT led_id, led_reference 
                          FROM t_led_led 
                          WHERE led_id='".$led_id."'") 
                          or die("Sélection de la base impossible !");
	$ref_prod=mysql_fetch_assoc($sql_ref);
	$ref_prod=$ref_prod['led_reference'];
 
	// => On verifie si le panier n'est pas vide
   	if($nb_articles=0)
   	{
    array_push($_SESSION['caddie']['id'],$new_id);
    array_push($_SESSION['caddie']['led_id'],$led_id);
    array_push($_SESSION['caddie']['prod'],$ref_prod);
    array_push($_SESSION['caddie']['qt'],$quantite);
    }
    else
    {
    // => On parcoure le panier pour modifier l'article précis
    for ($i =0; $i < $nb_articles; $i ++)
		{
		 if($_SESSION['caddie']['prod'][$i]==$ref_prod)
		 {
		 echo '<p>DOUBLE TROUVE</p>';
		 $_SESSION['caddie']['qt'][$i]+=$quantite;
		 echo $_SESSION['caddie']['qt'][$i];
		 $ajoute=true;
		 }
		}
    }
    if ($ajoute!=true)
		 {
         array_push($_SESSION['caddie']['id'],$new_id);
         array_push($_SESSION['caddie']['led_id'],$led_id);
         array_push($_SESSION['caddie']['prod'],$ref_prod);
         array_push($_SESSION['caddie']['qt'],$quantite);
         }
 
    }
Merci à tous pour votre aide
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 02h01   #2
Membre actif
 
Inscription : décembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 184
Points : 198
Points : 198
moi j'aurai fait comme ci dessous
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
// on ajoute/modifie l'article dans la session avec comme clé l'id de l'article
if(isset($_SESSION['caddies'][$new_id])){
    // article existant on incrémente la quantité
    $_SESSION['caddies'][$new_id]['qt']++;
} else {
    // creation d'un article
    $item = array();
    $item['id'] = $new_id;
    $item['led_id'] = $led_id;
    $item['prod'] = $ref_prod;
    $item['qt'] = $quantite;
    // on l'ajoute
    $_SESSION['caddies'][$new_id] = $item;
}
Helfima est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 15h16   #3
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
Bonjour Helfima,

merci pour ton aide. J'ai résolu mon problème. C'est un peu compliqué mais pour l'instant je m'en contente. Je verrai plus tard comment améliorer.
Voici le code si ça peut aider:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
function ajout_produit($new_id, $led_id, $quantite)
	{
	// => Initialisation de la variable retour
	$ajoute=false;
	// => Recherche des ref de l'article dans la db
	$sql_ref	= mysql_query("SELECT led_id, led_reference 
                          FROM t_led_led 
                          WHERE led_id='".$led_id."'") 
                          or die("Sélection de la base impossible !");
	$ref_prod	= mysql_fetch_assoc($sql_ref);
	$ref_prod	= $ref_prod['led_reference'];
 
	// => On verifie si le panier n'est pas vide
   	if(empty($_SESSION['caddie']['id']))
   	{
    array_push($_SESSION['caddie']['id'],$new_id);
    array_push($_SESSION['caddie']['led_id'],$led_id);
    array_push($_SESSION['caddie']['prod'],$ref_prod);
    array_push($_SESSION['caddie']['qt'],$quantite);
    $ajoute=true;
    }
    else
    {
	// => On compte le nbre d'articles différents dans le panier
	$nb_articles	= count($_SESSION['caddie']['id']);    
/* 	echo $nb_articles; */
    // => On parcoure le panier pour modifier l'article précis
    for ($i =0; $i < $nb_articles; $i ++)
		{
		 if(($_SESSION['caddie']['prod'][$i]==$ref_prod) AND $ajoute!=true )
		 {
/* 		 echo '<p>DOUBLE TROUVE</p>'; */
		 $_SESSION['caddie']['qt'][$i]+=$quantite;
/* 		 echo $_SESSION['caddie']['qt'][$i]; */
		 $ajoute=true;
		 }
		}
	if (($ajoute!=true) AND !empty($_SESSION['caddie']['id']))
	   {
        array_push($_SESSION['caddie']['id'],$new_id);
        array_push($_SESSION['caddie']['led_id'],$led_id);
        array_push($_SESSION['caddie']['prod'],$ref_prod);
        array_push($_SESSION['caddie']['qt'],$quantite);
       }
    }
    }
Encore merci à toi !
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h37.


 
 
 
 
Partenaires

Hébergement Web