Page 1 sur 1

Panier virtuel Objet

Posté : 01 févr. 2009, 16:07
par hi-logik
hello !

Voila je suis en train de réalisé le grand classique panier virtuel lol

j'ai vu pas mal de ressource dessus mais j'ai quelque difficulté à ajouté la quantité !
bon je me doute que je fais pas ce qu'y faut donc je vous demande de l'aide à fin de mieux comprendre mon erreur !

voici mon code: classe

tout d'abord la class Produit(j'ai omis touts les détails superflus pour l'exemple)

Code : Tout sélectionner

<?php class Product { private $id; private $name; private $describe; private $photo; private $price; /** * Constructor * * @access public * @param string $name * @param string $describe * @param string $photo * @param float $price * */ public function __construct($id,$name,$describe,$photo,$price) { $this->id = $id; $this->name = $name; $this->describe = $describe; $this->photo = $photo; $this->price = $price; } //.... doSomething // ... GETTER & SETTER... } ?>
la class cart

Code : Tout sélectionner

<?php class Cart { private $content; private $total; private $quantity = 1; /** * Construct * */ public function __construct() { session_start(); if(!isset($_SESSION['cart'])) { $_SESSION['cart'] = array(); $this->content = &$_SESSION['cart']; } } public function addItem(Product $product) { // c'est la que je bloque $this->content[] = $product; je peux peux pas faire $this->content[$product] += 1; } /** * Return the product by name * * */ public function getProductByName($name) { $products = &$this->getAllProduct(); foreach($products as $product) { if($product->getName() == $name) { return $product; } return false; } } /** * Return the product by id * * */ public function getProductById($id) { $products = &$this->getAllProduct(); foreach($products as $product) { if($product->getId() == $id) { return $product; } return false; } } /** * Return All Products in array * */ public function getAllProduct() { $list = array(); foreach($this->content as $key => $product) { if ($product == null) { return false; } $list[] = $product; } return $list; } } ?>

je n'arrive pas à ajouter une quantité sur un produit

pour le moment j'ai pas encore fais la vérification à savoir si le produit est déjà dans le panier
car je n'arrive pas à ajouté un tableau quantité à la session


merci pour votre aide ! :)

Posté : 02 févr. 2009, 19:03
par djtec
Et si tu fais:
public function __construct() {
      session_start();
      
      if(!isset($_SESSION['cart'])){
         $_SESSION['cart'] = array();
         $this->content = &$_SESSION['cart'];
         $this->content = array();
      }
}

       
public function addItem($product) {
       $this->content[$product]["name"] = $product;
       $this->content[$product]["qte"] += 1;
} 
Je ne sais pas trop si cela va mais c'est comme ça que j'aurais fais.

Posté : 02 févr. 2009, 19:31
par hi-logik
merci pour ton aide !

le problème c'est que ça me met un warning du type:

Warning: Illegal offset type....

en fait $this->content c'est le tableau $_SESSION['cart']

et il faudrais que dans ce tableau je puisse mettre un objet et ca quantité

bref je vois pas en objet, je vais cherché encore

Posté : 03 févr. 2009, 20:21
par djtec
C'est possible en objet j'en ai fait une, voici le lien http://www.phpfrance.com/forums/voir_reponse-271902.php regarde le dernier message Sadeq me l'avait corrigé complet peut-être que cela t'aidera.

Posté : 05 févr. 2009, 14:55
par hi-logik
c'est vrai que Sadeq aimes les Caddies lol

Sadeq si tu vois ce post un hommage au Caddie lool

je me suis souvenu qu'il m'en avais donné un exemple ici :

http://www.phpfrance.com/forums/viewtop ... highlight=

par contre il n'y avais pas la session dedans !
faut que je vois comment je pourrais la placer, car je veux créer un classe Session !

ton avis sur la question m'intéresse !

je ferais une class session du genre

Code : Tout sélectionner

class Session { public function __construct($sessionName = PHPSESSID) { session_name($sessionName); sesstion_start(); } public function setAttribut($key,$value) { $_session[$key] = $value; } // les autre methodes getAttribute etc... }

merci encore pour ton aide !