init(); } function init() { /* Initialise (ou réinitialise) un caddie */ $this->articles = array(); $this->total = 0; } function ajout(&$produitid, $quantite) { /* Ajoute un article au caddie et met à jour le montant total */ if (isset($produitid)) { if (! isset($this->articles[$produitid])) { $this->articles[$produitid] = O; } $this->articles[$produitid] += $quantite; } } function place(&$produitid, $quantite) { /* Met la quantité spécifiée du produit spécifié dans le caddie */ if (isset($produitid)) { $this->articles[$produitid] = (int) $quantite; } } function enleve(&$produitid) { /* Enlève un produit du caddie */ if (isset($produitid)) { unset($this->articles[$produitid]); } } function nettoie() { /* Cette fonction nettoie le caddie, en enlevant tous les produits non valides * c'est à dire ceux dont l'identifiant n'est pas numérique ou dont la quantité est < 1 */ foreach ($this->articles as $produitid => $quantite) { if ($quantite < 1) { unset($this->articles[$produitid]); } } } function compte_elements() { /* Renvoie le nombre d'articles dans le caddie */ $total = 0; foreach ($this->articles as $produitid => $quantite) { $total += $quantite; } return $total; } function recupere_produitid_list() { /* Renvoie la liste des produits délimités par des virgules */ $produitid_list = ""; foreach ($this->articles as $produitid => $quantite) { $produitid_list .= ",'" . $produitid ."'"; } /* Enlève la virgule du début */ return substr($produitid_list, 1); } function recalc_total() { /* Recalcule le prix total des articles du caddie */ $this->total = 0; $in_clause = $this->recupere_produitid_list(); if (empty($in_clause)) { return; } $qid = mysql_query("SELECT id, promotion, prix FROM produits WHERE id IN ($in_clause)"); if ($qid) { if (mysql_num_rows($qid) > 0) { while ($produit = mysql_fetch_array($qid)) { if ($produit["promotion"]<> 0) { $this->total += $this->articles[$produit["id"]] * $produit["prix"] * (1-$produit["promotion"]/100); } else { $this->total += $this->articles[$produit["id"]] * $produit["prix"]; } } } } } } ?>