Panier virtuel Objet

Eléphant du PHP | 135 Messages

01 févr. 2009, 16:07

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 ! :)
Zend PHP 5.3 certified ^^

Eléphant du PHP | 451 Messages

02 févr. 2009, 19:03

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.

Eléphant du PHP | 135 Messages

02 févr. 2009, 19:31

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
Zend PHP 5.3 certified ^^

Eléphant du PHP | 451 Messages

03 févr. 2009, 20:21

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.

Eléphant du PHP | 135 Messages

05 févr. 2009, 14:55

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 !
Zend PHP 5.3 certified ^^