[Résolu] gestion panier...

gestion panier... [Résolu] - PHP - Programmation

Marsh Posté le 02-06-2005 à 14:28:16    

bonjour,
je mesuis défini un panier de cette façon, mais je ne suis pas sûr que cela soit très efficace...

Code :
  1. if(!isset($_SESSION['panier']))
  2. {
  3.   $_SESSION['panier']=array("categorie" => $_GET['cat'],
  4.       "produit" => $_GET['prod'],
  5.       "qte" => 0);
  6. }


j'aimerai savoir comment augmenter la quantité d'un produit donné (par exemple, catégorie voiture, produit clio, quantité 1)
merci  :sol:


Message édité par jerome134 le 06-06-2005 à 09:40:29
Reply

Marsh Posté le 02-06-2005 à 14:28:16   

Reply

Marsh Posté le 02-06-2005 à 14:47:51    

eh bien:
 
$SESSION['panier']["categorie"] = "voiture";
$SESSION['panier']["produit"] = "clio";
$SESSION['panier']["qte"] = "1";

Reply

Marsh Posté le 02-06-2005 à 14:52:44    

mais la ton panier il ne pourra avoir q'un seul produit , certe avec une quantité variable mais tu ne pourras pas avoir plusieurs produits.

Reply

Marsh Posté le 02-06-2005 à 15:10:17    

benamoubeach a écrit :

mais la ton panier il ne pourra avoir q'un seul produit , certe avec une quantité variable mais tu ne pourras pas avoir plusieurs produits.


 
ok ;), c'est résolu, j'ai changé mon panier:

Code :
  1. if(!isset($_SESSION['panier']))
  2. {
  3.   $_SESSION['panier']=array("categorie" => array(),
  4.          "produit" => array(),
  5.          "qte" => 0);
  6.  $_SESSION['panier']['categorie']=$cat;
  7.  $_SESSION['panier']['produit']=$prod;
  8.  $_SESSION['panier']['qte']+=1;
  9. }
  10. else
  11. {
  12.  if(!isset($_SESSION['panier']['$cat']))
  13.   {
  14.    $_SESSION['panier']['categorie']=$cat;
  15.    $_SESSION['panier']['produit']=$prod;
  16.          $_SESSION['panier']['qte']+=1;
  17.      }
  18.  else
  19.   {
  20.    $_SESSION['panier']['qte']+=1;
  21.   }
  22. }


mais maintenant, j'ai le problème suivant:
je prend un article de la categorie voiture, ça ecrit, 'vous avez 1 voiture'.
ensuite, si je prends un article de la catégorie fleur, ça écrit: 'vous avez 2 fleurs', donc je dois mal faire mon incrémentation, mais je vois pas...
en fait j'ai le nombre total d'articles, mais il me faudrait le nombre d'articles par catégories


Message édité par jerome134 le 02-06-2005 à 15:18:27
Reply

Marsh Posté le 02-06-2005 à 15:33:36    

Forcément, là (en oubliant le fait que $_SESSION soit lui-même un tableau), tu as un tableau d'une dimension contenant 3 valeurs. Tu dois passer en un tableau de n dimension contenant chacune les 3 valeurs :)
 
Manque donc une dimension dont l'indice doit être variable :)

Reply

Marsh Posté le 02-06-2005 à 16:09:38    

naceroth a écrit :

Manque donc une dimension dont l'indice doit être variable :)


je comprends pas...
tu veux un tableau du style $_SESSION['panier'][$i] ???????

Reply

Marsh Posté le 02-06-2005 à 16:27:10    

(je m'exprime en français en général pourtant non ? :D)
 
J'ai dit une dimension dont l'indice doit être variable, pas une dimension dont l'indice doit être UNE variable. En clair, pour pouvoir différencier deux articles du panier, faut bien quelque part un élément qui les différencie. Hors dans ton exemple, tout les noms d'indices sont constants :)
 
Tu pourrais faire, par exemple :
$_SESSION['panier']['voiture']['clio']['Qté'] = 1
ou
$_SESSION['panier'][0]['catégorie'] = 'voiture'
$_SESSION['panier'][0]['produit'] = 'clio'
etc...

Reply

Marsh Posté le 02-06-2005 à 16:33:22    

que penses-tu de ça...

Code :
  1. <?
  2. session_start();
  3. $cat=$_GET['cat'];
  4. $prod=$_GET['prod'];
  5. if(!isset($_SESSION['panier']))
  6. {
  7.   $_SESSION['panier']=array("categorie" => array( "produit" => array( "quant" => 0),
  8.                                                  "quantite" => 0),
  9.          "qte" => 0);
  10.  array_push($_SESSION['panier']['categorie'], $cat);
  11.  array_push($_SESSION['panier']['categorie']['produit'], $prod);
  12.  $_SESSION['panier']['categorie']['produit']['quant']=1;
  13.  $_SESSION['panier']['categorie']['quantite']=1;
  14.         $_SESSION['panier']['qte']=1;
  15. }
  16. else
  17. {
  18.  if(!isset($_SESSION['panier']['$cat']))
  19.   {
  20.    array_push($_SESSION['panier']['categorie'], $cat);
  21.    array_push($_SESSION['panier']['categorie']['produit'], $prod);
  22.    $_SESSION['panier']['categorie']['produit']['quant']=1;
  23.    $_SESSION['panier']['categorie']['quantite']=1;
  24.          $_SESSION['panier']['qte']=$_SESSION['panier']['qte']+1;
  25.      }
  26.  else
  27.   {
  28.    $_SESSION['panier']['qte']=$_SESSION['panier']['qte']+1;
  29.    $_SESSION['panier']['categorie']['quantite']=$_SESSION['panier']['categorie']['quantite']+1;
  30.    $_SESSION['panier']['categorie']['produit']['quant']=$_SESSION['panier']['categorie']['produit']['quant']+1;
  31.   }
  32. }
  33. echo "vous avez ".$_SESSION['panier']['qte']." articles dans votre panier<br />";
  34. echo "vous avez ".$_SESSION['panier']['categorie']['quantite']." articles dans la catégorie ".$_SESSION['panier']['categorie']."<br />";
  35. ?>


mais il y a un problème à la fin, ça écrit :
"vous avez un article dans la categorie array", c'est débile!!!
mais bon, c'est sûrement que je ne stocke pas la bonne chose dedans...

Reply

Marsh Posté le 02-06-2005 à 16:49:07    

Le message n'est pas débile, il est logique, $_SESSION['panier']['categorie'] est bien un tableau :)
 
On va partir de mon deuxième exemple, qui est plus "sain" que le premier :

Code :
  1. $_SESSION['panier'] = array(array('catégorie' => null,'produit' => null, 'quantité' => 0));


 
Là, c'est le listage le plus basique, à toi de le modifier à ta guise pour les regrouper par catégorie par exemple :)
 
//edit : pour comprendre comment ça marche, fait un tableau simple, hors session et regarde avec print_r comment il va se représenter. Ajoute des éléments jusqu'à maitriser le truc :)


Message édité par naceroth le 02-06-2005 à 16:51:26
Reply

Marsh Posté le 03-06-2005 à 10:09:47    

ouf, je m'en suis sorti...mais j'ai du modifier mon panier:

Code :
  1. $_SESSION['panier']=array("categorie" => array( "nomcat" => "N/D",
  2.                                                 "produit" => array( "numprod" => "N/D",
  3.                                                                      "quant" => 0),
  4.                                                "quantite" => 0),
  5.                           "qte" => 0);


enfin, maintenant, ça marche :)
par contre, j'ai un soucis du fait que quand je suis sur 1 page pour selectionner un article, si j'appuie sur le bouton "ajouter", ça ajoute au panier et je suis sur la page ajouter.php.
mais si je vais à la page précédente et qu'ensuite je retourne à ajouter.php (grâce aux flêches en haut du navigateur...) il me remet le dernier article selectionné dans le panier!
il faudrait donc que je puisse faire un test sur le fait quer l'on appuie bien sur le bouton "ajouter"...
quelqu'un peut-il me dire comment m'y prendre...?
merci


Message édité par jerome134 le 04-06-2005 à 13:24:58
Reply

Marsh Posté le 03-06-2005 à 10:09:47   

Reply

Marsh Posté le 03-06-2005 à 16:56:57    

Ca ne fonctionnera pas, si tu utilises les boutons précédent/suivant, tu repostes le formulaire tel quel. Y compris le bouton sur lequel tu as appuyé.
 
Faut plutôt se diriger vers un système d'header entre ajouter.php et ta page de sélection.

Reply

Marsh Posté le 04-06-2005 à 17:55:54    

euh...d'accord, mais je sais pas du tout comment ça marche le header...je vais me renseigner...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed