Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CLASSE PHP5 DE PANIER TOUTE SIMPLE


Information sur la source

Catégorie :Class et Objet ( POO ) Classé sous : panier, classe, session Niveau : Initié Date de création : 29/09/2005 Vu / téléchargé: 13 778 / 1 632

Note :
9,78 / 10 - par 9 personnes
9,78 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (31)
Ajouter un commentaire et/ou une note

Description

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

Source

  • <?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
  • ?>
<?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
?>

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de bbcluny le 30/09/2005 15:41:52

Salut,

peut on avoir un exemple d'utilisation de ta classe ?

Merci d'avance

signaler à un administrateur
Commentaire de littlewings le 30/09/2005 16:48:34

OK, je pensais que les commentaires des méthodes seraient suffisamment explicites...

// création d'un objet de type Panier()
// sera stocké en variable de session, et donc accessible à tout moment par la suite (il faut réinstancier l'objet à chaque page quand même)

$monPanier = new Panier();

// je veux mettre trois bananes dans mon panier :

$monPanier->addItem("banane",3);

// je veux mettre 10 DVD dans mon panier :

$monPanier->addItem("DVD",10);

// finalement, je vais enlever deux bananes, une me suffira

$monPanier->removeItem("banane",2);

// combien me reste-t'il de bananes ?

echo $monPanier->showQuantity("banane");

// combien j'ai d'articles en tout dans mon panier ?
// (en ne mettant pas de paramètre, j'ai le total du nombre d'articles, toutes références confondues)  

echo $monPanier->showQuantity();

// enfin, je vais passer mon nombre de DVD de 10 à 20

$nomPanier->setQuantity("DVD",20);

// alors, qu'est-ce que j'ai dans mon panier maintenant ?

echo $monPanier->showCart();

// voilà ! Une petite note svp ^^ !

signaler à un administrateur
Commentaire de chezsteph1 le 03/10/2005 10:25:27

Simple et claire.
je n'en ai pas l'utilité directe, mais je pense qu'elle va m'inspirer ...
Merci !

signaler à un administrateur
Commentaire de FhX le 03/10/2005 23:08:24

C'est la que la sérialisation par session est interessante ! Enfin, c'est mon avis :)
Fait aussi un peu plus d'effort au niveau du traitement des variables, genre :

public function addItem($refproduit="",$nb=1){
   if ( $nb > 0 ) {
   @$this->panier[$refproduit]['quantity'] += $nb;
   } else {
   unset ($this->panier[$refproduit]);
   }
}
Par exemple :)

signaler à un administrateur
Commentaire de littlewings le 06/10/2005 10:41:30

@FhX => c'est vrai que j'aurais dû traiter mes variables ainsi. A vrai dire, je voulais éviter de faire un unset sur une référence n'existant pas, mais c'est vrai que PHP ne doit même pas renvoyer de notice() dans ce cas là !
Merci du conseil !

signaler à un administrateur
Commentaire de rilouteam le 07/10/2005 15:54:57

Merci pour l'info Littlewings,
Moi j'en aurai l'utilité la semaine prochaine pr un nouveau projet !
Bravo on en redemande des comme ça :)

signaler à un administrateur
Commentaire de rilouteam le 07/10/2005 16:01:08

Par contre restons logique, soit on code en francais, soit en anglais, mais pas en franglais :)
panier -> caddy
voirPanier -> showCart
!
Non franchement j'aime bien ces codes clair que l'on peut continuer à sa sauce sans se prendre la tete...
Pas si petit que ça le littlewings !

signaler à un administrateur
Commentaire de littlewings le 07/10/2005 16:42:49

Merci pour la casse Cyril... C'était du vite fait qu'on t'a dit bon sang ! J'y ai pensé juste après avoir posté ce code. En fait, je ne voulais pas utiliser le terme "Caddy" qui est une marque déposée (eh oui mon grand)... J'aurais du appeler cette classe Cart() !
Faites comme si vous n'aviez rien vu svp ! ^^

Sans dec', tu vas te servir de ce source pour un projet ?
Ca me ferait bien plaisir en tous cas !

signaler à un administrateur
Commentaire de rilouteam le 07/10/2005 16:57:40

Sérieux,
Ouais je pense que je vais m'en resservir la semaine prochaine pour un nouveau projet dont je te parlerais lundi :)
Sur toutes les sources de panier que j'ai trouvé c'est VRAIMENT la plus clair et la plus facile à modifier.

++ Noor

signaler à un administrateur
Commentaire de rugbysolidarite le 02/02/2006 22:40:34

Bonjour

je suis totalement novice en php donc ma question va vous paraitre forcément stupide ;-) grace à ce programme caddie comment fait on après pour le mettre sur un site ? (lien dans les pages, logo caddie, etc...) j'ai une petite boutique (elle a juste le nom pas la capacité lol) pour mon association caritative et je voulais mettre quelque chose de sympa comme ca sur le site.

merci de vos réponses
vince novice et moins encore

signaler à un administrateur
Commentaire de littlewings le 04/02/2006 10:54:09

Pour utiliser cette classe, un niveau minimum est requis. Elle permet uniquement de "stocker" et gérer en permanence le "contenu" (de manière abstraite) d'un caddie. Pour l'utiliser vous devez l'installer sur un serveur PHP5, dans le dossier d'include par exemple, et l'appeler dans vos pages PHP.
Mais pour mettre en ligne plus rapidement et plus simplement votre boutique, je ne saurais vous recommander de télécharger d'installer un CMS (Content Management System) de type XOOPS (http://www.xoops.org), qui est très simple d'utilisation et qui propose des extensions de type boutique en ligne.

signaler à un administrateur
Commentaire de rugbysolidarite le 04/02/2006 11:37:40

Merci beaucoup pour les infos.

signaler à un administrateur
Commentaire de bj33 le 03/04/2006 19:28:02

bonjour

j'ai trois problèmes.

je ne suis pas expert, seulement niveau moyen.mais j'avance.

je ne veux pas d'un cms, j'ai déjà un site en expansion,un forum et un blog, çà me suffit merci.

je ne souhaites pas être piraté donc, vù mon niveau en php(5), je ne joue pas avec les sessions.je prèfère un code pensé et écrit par un pro.c'est pour cette raison que je ne prend que des codes experts quand je bloque sur une fonction que j'aimerais mais ne peux écrire moi même de manière sécurisé(même si la plupart des scripts que l'on peux trouver sur cs ne le sont pas non plus, il n'ont pas eu le temps parait t'il...).est-ce que çà m'interdit cette merveilleuse possibilité d'ajouter un panier qu'il soit possible de télécharger à une galerie php existante?

cette galerie, je l'ai mise sur pied, avec ce que j'ai retenue en apprenant à coder en php5 avec l'aide de zend, de bons bouquins et de google et autres moteurs.seulement tout les paniers que j'ai vù et j'en ai vù des codes içi ou ailleurs, à l'exeption du votre, sont tous orientés business ou mal écrits.il y à bien, albulle, les classes me plaisent bien, elles sont librement adaptables mais elle contiennent des erreurs que je n'est pas pû corriger.j'en vient donc à mes questions.

1/j'inclu la classe comme suit :

include_once('classe/panier.php');

je crée une instance comme çà :

$panier_photo = new Panier();

le tout en haut de la page avant quoi que ce soit pour créer la session, jusque là pas de problèmes.le débogueur de zend m'indique bien un phpsessid.

j'ai créer une variable :

$ajout = $panier_photo->addItem($image,1);

ensuite, j'ai ce type de lien pour afficher l'image en taille réelle, celle que je veux ajouter au panier :

echo ("<a href=\"$imageDir/$image\" rel=\"lightbox\" title=\"$nomnettoye\"><img src=\"mini/$nomMini.jpg\" alt=\"$nomnettoye &agrave; sa taille r&eacute;elle\" /></a>\n");

et celui pour le panier

echo "<ul><li><a href='".$_SERVER['PHP_SELF']."?$ajout' title=\"ajout de $nomnettoye au panier\">ajout au panier</a></li></ul>\n";

ce code n'affiche rien d'autre que le nom de la page.j'ai aussi tester çà

$ajout = $panier_photo->addItem();
$ajout = $panier_photo->addItem($imageDir/$image);

si vous le voulez, une suggestion serait la bienvenue.


signaler à un administrateur
Commentaire de dens178 le 27/03/2007 03:12:15

bien moi j'aimerais voir un exemple visuel une page vue d'un panier qui functionne bien et avec un code ke je pourais examiner

signaler à un administrateur
Commentaire de mseh07 le 19/11/2007 15:54:55

Salut ,

un peut pb avec ce code :
l'osque je clique sur le lien consulter panier il m'affiche cet msg : " Array  "
- la page consulterpanier.php contin ce code
<?php
include_once('classe/panier.php');
$monPanier = new Panier();
echo $monPanier->showCart();
?>
dou vient cet eurre svp ?
Merci

signaler à un administrateur
Commentaire de littlewings le 19/11/2007 16:12:28

C'est pas une erreur, c'est bien un tableau qui est retourné par la méthode showCart (pardon, je me suis trompé dans mon exemple, c'était un print_r et pas un echo) en fait pour voir le contenu du panier il faut faire :

<?php
include_once('classe/panier.php');
$monPanier = new Panier();
echo '<pre>';
print_r($monPanier->showCart());
echo '</pre>';
?>

Après, à toi de parser le tableau avec un foreach (par exemple) pour en faire ce que tu veux à l'affichage !

signaler à un administrateur
Commentaire de mseh07 le 19/11/2007 16:26:28

Merci pour votre reponse ,

mnt je veut affichier le contenu de mon panier :
voici mon script:
<?php
include_once('classe/panier.php');
$monPanier = new Panier();
$tab=$monPanier->showCart();
foreach($this->$tab as $ref => $data) {
echo $list['ref'][$i] = $ref;echo '<br>';
echo $list['qte'][$i] = $data['quantity'];
$i++;
}
?>

mais il affiche cet msg :

Fatal error: Using $this when not in object context in C:\wamp\www\klesoft04-09-07\Ordinateurs_consutlterpanier.php on line 445
la ligne 445 : c'est foreach ....
encors un peut d'aide svp
Merci encors.

signaler à un administrateur
Commentaire de rilouteam le 19/11/2007 16:37:54

A priori, c'est plutot  :

foreach($tab as $ref => $data)  ...

car tab est un tableau et non un objet !
--> Using $this when not in object

N'est ce pas nOOr ??

Eh PAUPIETTE !

signaler à un administrateur
Commentaire de mseh07 le 19/11/2007 16:53:17


esque vous pouvez me donne le code qui permet de affichier le contenu de mon panier svp?
je pas bien compris cette notion svp
Merci

signaler à un administrateur
Commentaire de littlewings le 19/11/2007 17:02:23

Yo Rilou ! Ben c'est exactement ce que j'étais en train d'expliquer !
Bon, voici comment afficher le contenu du panier :
<?php
include_once('classe/panier.php');
$monPanier = new Panier();
$tab=$monPanier->showCart();
foreach($tab as $k => $v) {
  echo $v['qte'].' '. $v['ref'].'<br />';
}
?>

J'ai pas testé ce code mais à priori ça devrait être ceci... ;)

signaler à un administrateur
Commentaire de lbasic le 19/11/2007 23:47:32

Bonjour,

J'obtiens cette erreur :

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home.10.28/pleug/www/cat/panier.php on line 10

@++

signaler à un administrateur
Commentaire de littlewings le 20/11/2007 09:52:46

C'est parce que c'est une classe PHP5 et que vous êtes certainement sous PHP4 ou moins.

signaler à un administrateur
Commentaire de lbasic le 20/11/2007 12:57:03

Merci pour votre réponse rapide.

signaler à un administrateur
Commentaire de littlewings le 20/11/2007 14:18:08

Pour info, pour faire fonctionner cette classe sous PHP4, il suffit d'enlever tout les "public", "private", et de remplacer le __construct() par le nom de la classe : Panier()

signaler à un administrateur
Commentaire de Mement le 20/11/2007 23:12:55 10/10

Salutations,

Le code pour l'affichage est fonctionnelle, il est néanmoins nécessaire de faire deux petites modifications dans la fonction showCart();

$list[$i]['ref'] = $ref;
$list[$i]['qte'] = $data['quantity'];

N'étant pas un as, j'ai perdu énormément de temps mais j'ai réussi ^^ Je partage donc avec la communauté !
Félicitations pour la classe... Claire et bien pratique ;-)

signaler à un administrateur
Commentaire de littlewings le 21/11/2007 09:50:48

Merci pour la modif' !

signaler à un administrateur
Commentaire de Mement le 22/11/2007 14:59:47

Salutations,

J'ai également rencontré un problème lors de l'utilisation de mon script chez mon hébergeur (ou en local avec IE)... En effet, à l'ajout d'un produit, le script générait une nouvelle session et donc autant que d'ajout etc...
Pour éviter cela, il est préférable de déclarer l'ouverture de la session avec session_start(); comme d'habitude... Dans les premières lignes de vos fichiers php utilisant la classe ;-)

signaler à un administrateur
Commentaire de cflorian911 le 18/03/2008 18:08:48

Merci pour cette classe ....Par contre je n'arrive pas à créer une méthode pour supprimer un article (supprimer un article avec toute sa quantite). Est ce que quelqu'un sait comment faire ????

signaler à un administrateur
Commentaire de Mement le 18/03/2008 19:51:47

La fonction RemoveItem est là pour ça =)

Tu places un lien Supprimer comme celui-ci -> <a href='javascript:void(0)' onClick="document.location.href='index.php?ref=obj1&suppression=1'">

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 =)

signaler à un administrateur
Commentaire de cflorian911 le 20/03/2008 14:59:30

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

signaler à un administrateur
Commentaire de GauldoMagique le 30/12/2008 14:38:17 9/10

Super source, merci ! Simple et efficace.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Classe et panier [ par romalafrite ] http://www.phpcs.com/code.aspx?ID=12931Quelqu'un peut me dire comment récupérer le contenu du panier une fois que la sélection a été faite ?visit inte suppression d'article d'un panier [ par justine75 ] bonjour!petit probl&#232;me lors de la suppression d'article dans mon panieron m'a aid&#233; mais &#231;a ne marce pas... et je ne comprends pas vraim brainstorming: session panier achat ! [ par joduak ] Salut les gars! Je me prom&#232;ne sur mon site avec des variables de sessions $_SESSION jusqu'&#224; mon panier achat. arriv&#233; au panier achat, Gestion de panier en php [ par boninou ] Bonjour ! Je dois gérer un panier en php à l'aide de 2 variables de session : - un tableau pour la reference du produit - un tableau pour la qté lor sessions et objet [ par ov3rdoze ] Salut Je voudrai faire un systeme de panier. j'ai fais le code suivant : class Panier { var $panier = array(); // constructeur function __c Confirm [ par titounnnne ] Comment faire pour que l'internaute accepte ou refuse un ajout avec un confirm ? <span style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-f panier session [ par chevaliero ] Bonjour &#224; tous,J'ai r&#233;alis&#233; un carnet (caddie) de voyage pour r&#233;cuperer 2 informations : ID - NOM.Cela fonctionne impeccable en lo Session : prob d'ajout de données [ par DarkCid ] Yaoh !voilà pour faire mon panier virtuel, j'utilise des sessions. Je mets bien le session_start() ; en début de code et j'appelle cette fonction pour Mettre un objet dans une variable de session [ par adakick ] Bonjour, je voudrais enregistrer un objet dans une variable de session :$panier = new Panier();if(!isset($_SESSION['panier']))    $_SESSION['panier'] php session_start [ par regis62 ] Bonjour.je suis un débutant en php et j'ai un probléme.Dans la page acces_eleve un éléve se connect (grace à des formulaires).Dans la page requete_ele


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.