Classe php5 de panier toute simple

Soyez le premier à donner votre avis sur cette source.

Vue 30 160 fois - Téléchargée 3 161 fois

Description

Il suffit de regarder le nom des méthodes pour comprendre le focntionnement !

Source / Exemple :


<?PHP
//
// Cart Class (juillet 2005)
// Nordine Ghachi
// from TanukiDesign
// http://www.tanukidesign.com
//
class Panier {

  private $panier = array();

	// constructeur
	function __construct(){ // constructeur
		@session_start();
		if (!isset($_SESSION['cart'])) $_SESSION['cart']=array();
		$this->panier =& $_SESSION['cart'];
	}

	// ajouter un article $refproduit
	public function addItem($refproduit="",$nb=1){
		@$this->panier[$refproduit]['quantity'] += $nb;
		if ($nb <= 0) unset ($this->panier[$refproduit]);
	}
	
	// supprimer un article $refproduit
	public function removeItem($refproduit="",$nb=1){
		@$this->panier[$refproduit]['quantity'] -= $nb;
		if ($nb <= 0) unset ($this->panier[$refproduit]);
	}
	
		// choisir la quantité d'article $refproduit
	public function setQuantity($refproduit="",$toSet=""){
		@$this->panier[$refproduit]['quantity'] = $toSet ;
		if ($toSet <= 0) unset ($this->panier[$refproduit]);
	}
	
	// afficher la quantité de produits dans le panier
	// paramètre : $refproduit : permet d'afficher la quantité pour le produit de cette référence
	// si le paramètre est vide, on affiche la quantité totale de produit
	public function showQuantity($refproduit=""){
		if ($refproduit) {
			return $this->panier[$refproduit]['quantity'];
		}else{
			$total = 0;
			foreach($this->panier as $ref => $data) {
				$total += $data['quantity'];
			}
		}
			return $total;
	}
	
	// afficher la liste des articles (et accessoirement, leur quantité)
	
	public function showCart(){
			$list = array();
			$i = 0;
			foreach($this->panier as $ref => $data) {
				$list['ref'][$i] = $ref;
				$list['qte'][$i] = $data['quantity'];
				$i++;
			}
			return $list;
	}
	
} // fin de la classe
?>

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

julbuc
Messages postés
1
Date d'inscription
mercredi 23 mars 2011
Statut
Membre
Dernière intervention
23 mars 2011

Hello,

J'ai un problème avec ta classe sur un mutualisé ovh.

La méthode showQuantity() me renvoit : Cannot use object of type Cart as array.

Il n'a pas l'air de bien aimer
foreach($this->cart as $ref => $data) {
$total += $data['quantity'];
}

Auriez-vous une petite idée, le serveur et bien conf en php5 grace à SetEnv PHP_VER 5 dans un .htaccess

Ci-joint une copie de la classe :

<?php
session_start();
class Cart {

private $cart = array();

// constructeur
public function __construct(){ // constructeur
if (!isset($_SESSION['cart'])) $_SESSION['cart']=array();
$this->cart =& $_SESSION['cart'];
}

// ajouter un article $refproduit
public function addItem($refproduit="",$nb=1){
@$this->cart[$refproduit]['quantity'] += $nb;
if ($nb <= 0) unset ($this->cart[$refproduit]);
}

// supprimer un article $refproduit
public function removeItem($refproduit="",$nb=1){
@$this->cart[$refproduit]['quantity'] -= $nb;
if ($nb <= 0) unset ($this->cart[$refproduit]);
}

// choisir la quantité d'article $refproduit
public function setQuantity($refproduit="",$toSet=""){
@$this->cart[$refproduit]['quantity'] = $toSet ;
if ($toSet <= 0) unset ($this->cart[$refproduit]);
}

// afficher la quantité de produits dans le cart
// paramètre : $refproduit : permet d'afficher la quantité pour le produit de cette référence
// si le paramètre est vide, on affiche la quantité totale de produit

public function showQuantity($refproduit=""){
if ($refproduit) {
return $this->cart[$refproduit]['quantity'];
}else{
$total=0;
foreach($this->cart as $ref => $data) {
$total += $data['quantity'];
}
}
return $total;
}

// afficher la liste des articles (et accessoirement, leur quantité)

public function showCart(){
$list = array();
$i = 0;
foreach($this->cart as $ref => $data) {
$list[$i]['ref'] = $ref;
$list[$i]['qte'] = $data['quantity'];
$i++;
}
return $list;
}
public function destructCart() {
if (!isset($_SESSION['cart'])) unset($_SESSION['cart']);
}
}
?>

Merci d'avance pour vos réponses ; )
Donald08
Messages postés
3
Date d'inscription
jeudi 23 juin 2005
Statut
Membre
Dernière intervention
5 mars 2011

Comment faire pour supprimer un produit avec cette classe SVP. On peut supprimer par exemple 2 articles d'un produit mais si le resultat est à 0, il reste affiché dans le tableau à 0
GauldoMagique
Messages postés
8
Date d'inscription
lundi 15 décembre 2008
Statut
Membre
Dernière intervention
12 janvier 2009

Super source, merci ! Simple et efficace.
cflorian911
Messages postés
3
Date d'inscription
jeudi 5 octobre 2006
Statut
Membre
Dernière intervention
8 juin 2007

ok merci
Par contre j'ai un autre problème avec la fonction: showQuantity() quand je passe en parametre une référence d'un produit(REFTEST1).
J'obtiens cette erreur:
Notice: Undefined index: REFTEST1 in C:\Documents and Settings\Flo\Site\lib\commande\Panier.php on line 87

cela correspond à cette ligne:
return $this->panier[$refproduit]['quantity'];

Est ce que quelqu'un sait d'où cela peut venir ?

Merci d'avance
Mement
Messages postés
6
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
18 mars 2008

La fonction RemoveItem est là pour ça =)

Tu places un lien Supprimer comme celui-ci ->

Obj1 correspond à la référence de ton produit.

Tu ajoutes un code du genre:

if (isset($_GET['ref']) && $_GET['suppression']== 1){ $monPanier->removeItem($_GET['ref'], 0);
}

Et le produit correspondant à la référence sera supprimé quelque soit sa quantité... J'ai fait de la sorte pour mon TP d'initiation au PHP =)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.