8791 sujets

Développement web côté serveur, CMS

Bonjour voila je vous explique j'ai créer un panier pour un site web.J'utilise les sessions pour enregistrer les articles avec la référence et la quantité ainsi que le prix meme si celui la je peux le récupérer dans ma base de données. Ce que je souhaite c'est pouvoir afficher le contenu de mon panier sous forme de tableau. J'ai essayé de faire une boucle foreach pour parcourir la session mais je n'y arrive pas et j'ai abandonné voici mon code:




session_start();
$prixtotal=0; //initialise prix total d'un panier
//test si la session existe
if(!isset($_SESSION['panier'])) 
	$_SESSION['panier']=array();
//verification du click sur le bouton ajouter
if(isset($_POST['ajouter']))
{
	if($_POST['ref']==$_SESSION['panier']['article_'.$_POST['ref']]['ref'])
	{
		$_SESSION['panier']['article_'.$_POST['ref']]['ref']=$_POST['ref'];
		$_SESSION['panier']['article_'.$_POST['ref']]['qte']=$_SESSION['panier']['article_'.$_POST['ref']]['qte']+$_POST['quantite'];
		$_SESSION['panier']['article_'.$_POST['ref']]['prix']=$_POST['prix'];
		$_SESSION['panier']['prixtotal']=$_SESSION['panier']['prixtotal']+($_POST['quantite']*$_POST['prix']);
		$_SESSION['panier']['nb']=$_SESSION['panier']['nb']+($_POST['quantite']);
	}else{
		$_SESSION['panier']['article_'.$_POST['ref']]=array();
		$_SESSION['panier']['article_'.$_POST['ref']]['ref']=$_POST['ref'];
		$_SESSION['panier']['article_'.$_POST['ref']]['qte']=$_POST['quantite'];
		$_SESSION['panier']['article_'.$_POST['ref']]['prix']=$_POST['prix'];
		$_SESSION['panier']['prixtotal']=$_SESSION['panier']['prixtotal']+($_POST['quantite']*$_POST['prix']);
		$_SESSION['panier']['nb']=$_SESSION['panier']['nb']+($_POST['quantite']);
		}
/*$ref=$_POST['ref'];//recupere identifiant du produit
header("location:  http://localhost/elleon/shop/produits.php?id=$ref");//renvoi  vers la page produit*/
echo "<pre>";
print_r($_SESSION);
echo "</pre>";

Modifié par greg12 (15 Sep 2008 - 11:44)
Merci pour la mise en forme.

Il me semble que dans le cas d'un caddie rien ne vaut une petite class qui va bien. Tu pourrais t'inspirer de celle-ci par exemple (elle contient également la réponse à ta question).

A+
Merci Heyoan pour ton aide. Donc j'ai repris la class Panier.
Mais j'ai un souci.
Voici ma methode pour afficher ma liste des articles:

 public function showCart(){
 $list = array();
 $i = 0;
 foreach($this->panier as $ref => $data) {
  echo $list['ref'][$i] = $ref;
  $list['qte'][$i] = $data['quantity'];
 $i++;
 }
 return $list;
 }


et voici le code ou je me sers de cette classe panier:

$ref=$_POST['ref'];
$qte=$_POST['quantite'];
$caddie=new Panier();
$caddie->addItem($refproduit=$ref,$nb=$qte);
$caddie->showQuantity($refproduit=$ref);
$caddie->showCart();


Et j'ai essayé de faire un echo $caddie->showCart(); et il me retourne un array.
greg12 a écrit :

Et j'ai essayé de faire un echo $caddie->showCart(); et il me retourne un array.
Oui ! C'est l'idée ! Smiley langue

Essaies
echo '<pre>';
print_r ($caddie->showCart());
echo '</pre>';
Oui il y a bien un affichage avec:

print_r ($caddie->showCart());

Mais bon au niveau de l'affichage ce n'est pas le mieux.
J'ai décidé finalement de faire un affichage en tableau dans la methode.
Et lorsque j'apelle la methode sous la forme

$caddie->showCart();

cela affiche bien la liste de mes articles dans mon panier.
Merci bien
greg12 a écrit :

J'ai décidé finalement de faire un affichage en tableau dans la methode.
+1 Smiley thumpup

Ce genre de class ne demande qu'à être adaptée selon les besoins...

Est-ce que tu considères que ce sujet est [Résolu] ? Smiley cligne