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 17/03/2008, 10h59   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 17
Points : 3
Points : 3
Par défaut Panier : éviter le doublon d'un même article

Bonjour tout le monde

J'espere que je post au bon endroit, vu que le panier est aussi une histoire de session.

Alors, vla, j'ai un petit probleme avec un panier virtuel. Il fonctionne , c'est déjà ça, mais je n'arrive pas a faire en sorte qu'un article qui se trouve déjà dans le panier ne soit pas doublé, mais plutot rajouter en quantité.
J'ai éssayé déjà plusieur script que j'ai trouver en cherchant un peu et en l'adaptant, mais ça n'a pas fonctionner.

Voici le code qui ajoute l'article au panier :

Code :
1
2
3
4
5
 
<form action="panier.php?reference=<?php echo $row_rsProduit1['reference']; ?>&amp;prix=<?php echo $row_rsProduit1['prix']; ?>&amp;ajoutPanier=AJOUTER" method="post" name="form1" id="form1">
                            <input name="quantite" type="text" id="quantite" value="1" size="4" />
                            <input name="submit1" type="image" id="submit1"  value="Ajouter" src="images/boutons_pictos/bouton_ajouter.gif"/>
                        </form>
et le script du panier qui ajoute l'article au panier :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
if ($ajoutPanier=="AJOUTER")
{
			$reference=$_GET['reference'];
			$nb=$_POST['quantite']; //par defaut la quantité = 1, remplacé par quantite
			$prix=$_GET['prix'];
			$totalarticle= $prix * $nb; //c'est moi qui l'est rajouté
			$liste[]=array($reference,$nb,$prix,$prix,$totalarticle); // j'ai rajouté $totalarticle
			$_SESSION['liste']=$liste; 
			//ajoute un article à la liste
}
Si il manque une info n'hésité pas.

Sayes1
sayes1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2008, 11h14   #2
Membre confirmé
 
Avatar de MANU_2
 
Inscription : mai 2002
Messages : 417
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 417
Points : 224
Points : 224
Avant de l'ajouter, test si la référence existe ou pas.
Si elle existe alors tu augment la quantité.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if ($ajoutPanier=="AJOUTER")
{
      if (ref existe pas )
      {
			$reference=$_GET['reference'];
			$nb=$_POST['quantite']; //par defaut la quantité = 1, remplacé par quantite
			$prix=$_GET['prix'];
			$totalarticle= $prix * $nb; //c'est moi qui l'est rajouté
			$liste[]=array($reference,$nb,$prix,$prix,$totalarticle); // j'ai rajouté $totalarticle
			$_SESSION['liste']=$liste; 
			//ajoute un article à la liste
       }
       else
       {
             // augmenter quantité
        }
}
MANU_2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2008, 11h19   #3
Invité de passage
 
Inscription : janvier 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 17
Points : 3
Points : 3
Salut,

j'avais essayé avec ça :
Code :
1
2
3
4
5
6
7
 
$positionProduit = array_search($_GET['reference'],  $_SESSION['liste']['reference']);
 
  if ($positionProduit !== false)
  {
   $_SESSION['liste']['nb'][$positionProduit] += $_POST['quantite'];
  }
Mais php me disait qu'il y avait une erreur en 2eme argument
sayes1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2008, 11h24   #4
Membre confirmé
 
Avatar de MANU_2
 
Inscription : mai 2002
Messages : 417
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 417
Points : 224
Points : 224
Essaie plutot ça :

Code :
$positionProduit = array_search($_GET['reference'],  $_SESSION['liste'][0]);
MANU_2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2008, 11h39   #5
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
juste une remarque en faisant ça:

Code :
$_SESSION['liste']=$liste;
tu n'ajoute pas un produit a $_SESSION['liste'] tu remplaces celui qui était deja
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2008, 11h39   #6
Invité de passage
 
Inscription : janvier 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 17
Points : 3
Points : 3
j'ai fait ça :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
if ($ajoutPanier=="AJOUTER")
 
$positionProduit = array_search($_GET['reference'],  $_SESSION['liste'][0]);
 
{
  if ($positionProduit !== false)
  {
   $_SESSION['liste']['nb'][$positionProduit] += $_POST['quantite'];
  }
  else
  {			$reference=$_GET['reference'];
			$nb=$_POST['quantite']; //par defaut la quantité = 1, remplacé par quantite
			$prix=$_GET['prix'];
			$totalarticle= $prix * $nb; //c'est moi qui l'est rajouté
			$liste[]=array($reference,$nb,$prix,$prix,$totalarticle); // j'ai rajouté $totalarticle
			$_SESSION['liste']=$liste; 
			//ajoute un article à la liste
	}
}
et php me renvoit l'erreur suivante :
Warning: array_search() [function.array-search]: Wrong datatype for second argument in C:\wamp\www\site_boutique_aua\panier.php on line 40

Le script sur lequel je me base pour éviter le doublon vient de :
sayes1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2008, 12h09   #7
Invité de passage
 
Inscription : janvier 2008
Messages : 17
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 17
Points : 3
Points : 3
Citation:
Envoyé par boo64 Voir le message
juste une remarque en faisant ça:

Code :
$_SESSION['liste']=$liste;
tu n'ajoute pas un produit a $_SESSION['liste'] tu remplaces celui qui était deja

Je le met où ? dans la fonction array_search ou dans le
Code :
  if ($positionProduit !== false)
?

Parceque je l'ai mis dans ce dernier, mais il m'indique toujours la même erreur, et quand je rajoute un 2 eme article identique, il a été quand meme doublé
sayes1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2008, 13h29   #8
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
c'etait quoi le code qui marchait?
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h57.


 
 
 
 
Partenaires

Hébergement Web