Class panier caddie

Soyez le premier à donner votre avis sur cette source.

Vue 43 603 fois - Téléchargée 9 780 fois

Description

Petite classe, une de plus sur les caddies :
- Gestion des articles
- Des Frais de port
- Des tarifs HT et TTC

Source / Exemple :


// Frais de port et livraison
function getLivraison()

function getTypeLivraison() 

function ajoutPort($port, $typeport)

// Total Final TTC
function getTotalFinalTTC()

// Renvoie la quantite de l'article $numserie
function getQteArticle($numserie)

// Renvoie le prix de l'article $numserie
function getPrixArticle($numserie) 

// Renvoie le montant HT de l'article $numserie
function getMontantArticle($numserie) 

// Renvoie le montant TTC de l'article $numserie
function getMontantTTCArticle($numserie) 

// Renvoie le montant TTC de l'article $numserie
function getMontantTVAArticle($numserie)

// Renvoie le nombre d'article contenus dans le Panier
function getNombreArticle()

// Renvoie le montant total HT
function getTotalHT() 

// Renvoie le montant total TTC
function getTotalTTC() 

// Renvoie le montant de la TVA
function getTotalTVA() 

// Renvoie le montant de la TVA
function getTVA() 

// Ajoute un article dans le Panier
function ajouterArticle($numserie, $quantite, $montantHT = 0)

// Supprime un article du Panier
function supprimerArticle($numserie) 

// Met à jour la quantite d'un article sélectionné dans le Panier
function miseAJourQteArticle($numserie, $quantite) 

// Calcule le montant Total HT et TTC du panier
function CalculTotal($prix) 

// Calcule le montant Total HT et TTC par article
function CalculMontantArticle($numserie, $prix, $qte)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

slt, svp j'ai besoin d' aide. je suis vraiment nul, bon un peut.
voilà déjà deux jour que j'essaie d'afficher la liste de mes produits dans ma table products et je n'arrive pas vraiment à un bon résultat,

elle m'affiche juste un produit et le dernier de ma table products
svp comment afficher tout les produits de ma table products

dans : $out='

la page *liste_article*

<?php

include_once 'panier.class.php';
//include_once 'connect.php';
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('ecomm', $base) ;

session **

session_start();


/*************************************************************************************************
    • déclarations variables **
                                                                                                                                                                                                  • /

$contenu = "";
$page = null;


/*************************************************************************************************
    • affectations variables **
                                                                                                                                                                                                  • /

$page->base = ((isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https" : "http")."://".$_SERVER["HTTP_HOST"];
$page->dirname = dirname($_SERVER["SCRIPT_NAME"]);
$page->basename = basename($_SERVER["SCRIPT_NAME"]);
$page->origine = $page->base.$page->dirname."/".$page->basename.(isset($_SERVER["QUERY_STRING"]) ? "?".$_SERVER["QUERY_STRING"] : "");
$page->query = isset($_SERVER["QUERY_STRING"]) ? "?".$_SERVER["QUERY_STRING"]."" : "";
$page->protocol = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https" : "http";
$page->action = $page->protocol."://".$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"].$page->query;

//avec ISSET
//Si la variable $_POST['truc'] existe, alors $truc = $_POST['truc'] sinon elle vaut NULL
$truc = isset($_POST['truc']) ? $_POST['truc'] : NULL;

//ou avec !EMPTY()
//Si la variable $_POST['truc'] existe et n'est pas vide, alors $truc = $_POST['truc'] sinon elle vaut NULL
$truc = !empty($_POST['truc']) ? $_POST['truc'] : NULL;
/*************************************************************************************************
    • programme principal **
                                                                                                                                                                                                  • /

print '
<html>
<head>
<title>Liste Article</title>
</head>
<body>

<form name="form1" method="post" action="'.$page->action.'" enctype="application/x-www-form-urlencoded">';
$contenu .= Affichages($page, $html);


print $contenu.'


</form>
</body>
</html>';




/*************************************************************************************************
    • fonctions **
                                                                                                                                                                                                  • /

// affichage principal
function Affichages(&$page, &$html) {

$sql ='SELECT * FROM products';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while($data = mysql_fetch_array($req)){

$out = '

<table border="0" cellspacing="0" cellpadding="0" width="80%" align="center">
<tr>
<td align="left"><b>Désignation</b></td>
<td align="left"><b>Référence</b></td>
<td align="right"><b>P.U. (HT)</b></td>
<td align="right"><b>P.U. (TTC)</b></td>
<td align="middle"><b>Panier</b></td>
</tr>
<tr>
<td align="left"><img src="imgs/'.$data['img'].'.png"width="50" height="50"/></td>
<td align="left">'.$data['name'].'</td>
<td align="right">'.$data['description'].'</td>
<td align="right">'.$data['price'].'€</td>
<td align="right">181.79 €</td>
<select name="couleur_p_1"><option value="noir">black</option> </select>


<td align="middle"><input type="text" name="qte_1" value="1" size="4" />
 <a href="#" onclick="document.location.href=\'ajout_panier.php?numserie='.$data['id'].'&couleur=\'+document.form1.couleur_p_1.options[document.form1.couleur_p_1.selectedIndex].value+\'&qte=\'+document.form1.qte_1.value+\'&prix='.$data['price'].'&name='.$data['name'].'&origine=liste_article.php?\'">Ajout Panier</a>
</td>
</tr>
</table>';

}
if (isset($_SESSION['panier'])) {
$page->panier = unserialize($_SESSION['panier']);

if (is_object($page->panier) && $page->panier->getNombreArticle() > 0) {
$out .= '
<br /><br />
<center><a href="consultation_panier.php">Voir Panier »</a></center>';
}
}

return $out;
}
?>
dpk1
Messages postés
11
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
2 avril 2012

re-bonjour

voici ma variable propalarticle";N;

string(485) "O:6:"Panier":9:{s:7:"article";a:1:{s:23:"1589526272_49f3364a23_o";a:5:{s:3:"qte";s:1:"1";s:4:"prix";s:5:"11.50";s:9:"montantHT";d:11.5;s:10:"montantTTC";d:13.7539999999999995594635038287378847599029541015625;s:13:"propalarticle";N;}}s:9:"nbarticle";i:1;s:7:"totalHT";d:11.5;s:8:"totalTTC";d:13.7539999999999995594635038287378847599029541015625;s:3:"TVA";d:19.60000000000000142108547152020037174224853515625;s:13:"calculmontant";b:1;s:4:"port";i:0;s:8:"typeport";i:0;s:7:"portTVA";i:0;}"
dpk1
Messages postés
11
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
2 avril 2012

bonjour à tous
je suis débutant et se script et toutes ces explications sont merveilleux

spécial dédicace à Steph666 et à lelapinou_69

car j'ai lu toute la page et l'on comprend vraiment beaucoup de chose.

Il est très tard à l'heure ou je vous écrit mais j'ai tout petit souci qui me freeze les cheveux

je récupère mes donnée via une base de donnée et je voudrais affiche l'image correspondant au panier.

j'ai bien lueet re-lu le commentaire de corsonr le 05/04/2006 14:36:41 je fais un var_dump mais l'image ne s'affiche.

avez vous une idée
cs_JessicaRabbit
Messages postés
1
Date d'inscription
mercredi 27 octobre 2010
Statut
Membre
Dernière intervention
27 octobre 2010

Bonjour!
Je déterre ce sujet en espérant que l'on pourra me répondre.
Devant réaliser un panier d'achat pour un site internet, j'ai repris le code donné ici, en y apportant des modifications. D'ailleurs, merci pour ce code qui m'a beaucoup aidé étant donné que je n'avais aucune notion de la poo (je débute seulement en php).

Le site de vente sur lequel je travaille (je suis en stage) propose différentes catégories de prix, selon les articles, et selon la quantité demandée (tarifs dégressifs).
De la page liste_articles, on va sur une page de description de l'article, sur laquelle on peut choisir la quantité. Le prix unitaire varie alors. C'est à ce stade là, lorsque l'on clique sur "ajouter au panier" que les données sont envoyées dans "ajout_panier.php" puis dans panier.class, pour être affichée ensuite dans "consultation.php".
Arrivé dans consultation.php, l'affichage est ok et les modifications de prix unitaires se font bien, mais j'ai deux problèmes.
Déjà, le message "Notice: Undefined index: prixUni in C:\wamp\www\Panier\panier.class.php on line 143" s'affiche (puis disparait si l'on clique sur "actualiser" dans la page) et ensuite, aucune modification n'est faite au niveau du prix total HT et TTC du panier. J'aimerai obtenir un peu d'aide, ça fait un moment que je bloque là-dessus et je ne trouve pas de réponses.

Voilà mon code:
*****************************************************************
"ajout_panier.php"
*****************************************************************
<?php

/** Fichier : ajout_panier.php
Fonction : formulaire d'ajout d'article au panier **/

/** includes **/
include_once 'panier.class.php';

/** session **/
session_start();

if (!isset($_SESSION['panier']))
{
session_register("panier");
$var = new Panier();
}
else
{
$var = unserialize($_SESSION['panier']);
if ($var == "")
$var = new Panier();
}

//affectations variables
$nom = isset($_REQUEST["nom"]) ? $_REQUEST["nom"] : "";
$qte = isset($_REQUEST["qte"]) ? $_REQUEST["qte"] : 0;
$origine = isset($_REQUEST["origine"]) ? $_REQUEST["origine"] : "";
$prix = isset($_REQUEST["prix"]) ? $_REQUEST["prix"] : 0;
$cat_prix = isset($_REQUEST["cat_prix"]) ? $_REQUEST["cat_prix"] : "";

//programme principal
if (!Empty($nom) && $qte > 0)
{
if ($prix > 0)
{
$var->calculmontant = true;
$var->ajouterArticle($nom, $prix, $qte, $cat_prix);
}
else
{
//normalement quand cette fonction est appelée
//le prix unitaire de l'article est sauvegardé.
$var->ajouterArticle($nom, $prix, $qte, $cat_prix);
}
$_SESSION["panier"] = serialize($var);
}
if ($origine)
{
Header("Location: $origine");
exit;
}
?>

************************************************************
panier.class.php
************************************************************
<?php

/** Fichier : panier.class.php
Fonction : classe de gestion de panier **/

class Panier
{
var $article; // Tableau des articles du Panier
var $nbarticle; // Nombre d'articles dans le Panier
var $totalHT; // Montant total HT du Panier
var $totalTTC; // Montant total TTC du Panier
var $TVA; // Montant TVA
var $calculmontant; // Active le calcul du montant ou non

/** Constructeur initialise le tableau d'articles et le montant total du Panier **/function Panier($actif false, $tva 19.6)
{
$this->article = array();
$this->nbarticle = 0;
$this->totalHT = 0;
$this->totalTTC = 0;
$this->TVA = $tva;
$this->calculmontant = $actif;
}

/** Destructeur**/
function destroy()
{
unset ($this->article);
unset ($this->nbarticle);
unset ($this->totalHT);
unset ($this->totalTTC);
unset ($this->TVA);
unset ($this->calculmontant);
}

/**FONCTION APPELEE DS DESCRIPTION_ARTICLE **/

/** Envoie dans le panier la quantité pour chaque article lorsque l'on clique sur "Ajouter au Panier"**/
function getNombreArticle()
{
return ($this->nbarticle);
}

/**FONCTIONS APPELEES DANS CONSULTATION_PANIER**/

/** Affiche le prix à l'unité de chaque article dans le panier (sans catégorie prix)**/
function getPrixArticle($nomArticle)
{
if (isset($this->article[$nomArticle]['prix']))
return ($this->article[$nomArticle]['prix']);
else return 0;
}

/** Affiche dans le panier la quantité pour chaque article **/
function getQteArticle($nomArticle)
{
if (isset($this->article[$nomArticle]['qte']))
return ($this->article[$nomArticle]['qte']);
else return 0;
}

/** Affiche dans le panier le montant de la TVA (19,6%)**/
function getTVA()
{
return (sprintf("%.2f", $this->TVA));
}

/** Renvoie le montant de l'article $nomArticle**/
function getMontantArticle($nomArticle)
{
if (isset($this->calculmontant) && $this->calculmontant == true)
return (sprintf("%.2f", $this->article[$nomArticle]['montantTTC']));
else return 0;
}

/** Renvoie le total final HT **/
function getTotalFinalHT()
{
if (isset($this->calculmontant) && $this->calculmontant == true)
return (sprintf("%.2f", ($this->totalHT)));
else return 0;
}

/** Renvoie le total final de la TVA **/
function getTotalFinalTVA()
{
if (isset($this->calculmontant) && $this->calculmontant == true)
return (sprintf("%.2f", (($this->totalHT) * ($this->TVA / 100))));
else return 0;
}

/** Renvoie le total final TTC: le montant final du panier, tva incluse**/
function getTotalFinalTTC()
{
if (isset($this->calculmontant) && $this->calculmontant == true)
return (sprintf("%.2f", ($this->totalTTC)));
else return 0;
}

/** Supprime un article du Panier **/
function supprimerArticle($nomArticle)
{
if (!empty($nomArticle) && $this->article[$nomArticle])
{
if (isset($this->calculmontant) && $this->calculmontant == true)
$this->CalculTotal(- $this->article[$nomArticle]['montantTTC']);
unset($this->article[$nomArticle]);
$this->nbarticle--;
}
}

/** Met à jour la quantité d'un article sélectionné dans le Panier
function setQteArticle($nomArticle, $quantite)
{
if (!empty($nomArticle) && $this->article[$nomArticle])
{
if ($quantite <=0) // si qte nulle ou négative
{
$this->supprimerArticle($nomArticle);
}
else
{
//place la nouvelle qte dans l'article.
$this->article[$nomArticle]['qte'] = $quantite;
}
}
}

/** Récupère le prix unitaire de l'article en fonction de sa quantité courante
function getPrixUniArticle($nomArticle)
{
return $this->article[$nomArticle]['prixUni'];
}

/** définit le prix unitaire de l'article en fonction de la qte et de cat_prix
function setPrixUniArticle($nomArticle,$newQte)
{
if (isset($this->article[$nomArticle]['prix']))
{
/**ouverture d'une connexion**/
include("connexion.php");
$cat_prix = $this->article[$nomArticle]['cat_prix'];
$resultats=$bdd->query("SELECT PRIX_NIVEAU1, PRIX_NIVEAU2, PRIX_NIVEAU3, BORNE_INF1, BORNE_SUP1, BORNE_INF2, BORNE_SUP2, BORNE_INF3 FROM categorie_prix WHERE categorie_prix.CAT_PRIX LIKE '$cat_prix'");
$resultats->setFetchMode(PDO::FETCH_OBJ);

//on détermine le prix unitaire en fonction de la qte.
while($donnees = $resultats->fetch())
{
if($newQte >= $donnees->BORNE_INF1 && $newQte <= $donnees->BORNE_SUP1)
{
$prixU = $donnees->PRIX_NIVEAU1;
}
else if($newQte >= $donnees->BORNE_INF2 && $newQte <= $donnees->BORNE_SUP2)
{
$prixU = $donnees->PRIX_NIVEAU2;
}
else if($newQte >= $donnees->BORNE_INF3)
{
$prixU = $donnees->PRIX_NIVEAU3;
}
}
$resultats->closeCursor();

//mise à jour du prix unitaire.
$this->article[$nomArticle]['prixUni'] = $prixU;
}
}

/**Met à jour le prix d'un article sélectionné dans le Panier selon la qte
/**@param $nomArticle : l'article en question.
/**@param $newQte : la nouvelle quantitée.
function setPrixTotArticle($nomArticle,$newQte)
{
//mise à jour de la qte :
$this->setQteArticle($nomArticle, $newQte);

//mise à jour du prix unitaire :
$this->setPrixUniArticle($nomArticle,$newQte);

$prixU = $this->article[$nomArticle]['prixUni'];

//mise à jour du prix total de l'article :
$this->CalculMontantArticle($nomArticle, $prixU, $newQte);
}

/**FONCTIONS APPELEES DANS AJOUT_PANIER **/

/** Ajoute un article dans le Panier**/
function ajouterArticle($nomArticle, $prix =0, $quantite, $cat_prix)
{
if (!empty($nomArticle))
{
if (isset($this->article[$nomArticle]))
$this->article[$nomArticle]['qte'] += $quantite;
else
{
$this->article[$nomArticle]['qte'] = $quantite;
$this->nbarticle++;
}

//nouvelle qte :
$newQte = $this->article[$nomArticle]['qte'];

//mise à jour du prix unitaire :
$this->setPrixUniArticle($nomArticle,$newQte);

//mise à jour du prix total de l'article.
$this->setPrixTotArticle($nomArticle,$newQte);

if (isset($this->calculmontant) && $this->calculmontant == true)
{
$this->article[$nomArticle]['prix'] = $prix;
$this->CalculMontantArticle($nomArticle, $this->article[$nomArticle]['prix'], $quantite);
$this->CalculTotal($this->article[$nomArticle]['prix']*$quantite);
$this->CalculMontantArticle($nomArticle, $prix, $qte);
}
}
$this->article[$nomArticle]['cat_prix'] = $cat_prix;

//mise à jour du prix total de l'article :
$this->CalculMontantArticle($nomArticle, $prixU, $newQte);

}

/**Affiche Catégorie Prix**/
function getcat_prix($nomArticle)
{
return ($this->article[$nomArticle]['cat_prix']);
}

/** Calcule le montant Total HT et TTC du panier**/
function CalculTotal($prix)
{
$this->totalTTC += $prix;
$this->totalHT += $prix / (1 + ($this->TVA / 100));
}

/** Calcule le montant Total HT et TTC par article**/
function CalculMontantArticle($nomArticle, $prix, $qte)
{
$this->article[$nomArticle]['montantTTC'] = $prix * $qte;
$this->article[$nomArticle]['montantHT'] = $prix * $qte / (1 + ($this->TVA / 100));
}
}
?>
*********************************************************
consultation_article.php
*********************************************************
<?php

/** Fichier : consultation_panier.php
Fonction : formulaire de consultation du panier**/

/** includes **/
include_once 'panier.class.php';

/** session **/
session_start();

/** déclarations variables **/
$contenu = "";
$page = null;

/** affectations variables **/
$page->maj = isset($_POST["maj_x"]) ? $_POST["maj_x"] : "";$page->base ((isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] "on") ? "https" : "http")."://".$_SERVER["HTTP_HOST"];
$page->dirname = dirname($_SERVER["SCRIPT_NAME"]);
$page->query = isset($_SERVER["QUERY_STRING"]) ? "?".$_SERVER["QUERY_STRING"]."" : "";$page->protocol (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] "on") ? "https" : "http";
$page->action = $page->protocol."://".$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"].$page->query;
$page->panier = isset($_SESSION['panier']) ? unserialize($_SESSION['panier']) : "";

/** programme principal **/
print '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Consultation Panier</title>
</head>

<form name="form1" method="post" action="'.$page->action.'" enctype="application/x-www-form-urlencoded">';
if ($page->maj) maj($page);
$contenu .= Affichages($page);
print $contenu.'
</form>

</html>';

$_SESSION["panier"] = serialize($page->panier);

/** affichage principal **/
function Affichages(&$page)
{
if ($page->panier == "" || (is_object($page->panier) && $page->panier->getNombreArticle() <= 0))
return '
<center>Votre panier est vide
</center>';

$out = '

<center>

<fieldset>
Votre Panier

Articles |
cat Prix |
Prix Unitaire (TTC) |
Quantité |
Prix Total par article (TTC) |
Supprimer |
';

foreach ($page->panier->article as $nomArticle => $val)
{
print_r($val);
$out .= '

----

'.$nomArticle.',
panier->getcat_prix($nomArticle).'"/>,
'.$page->panier->getPrixUniArticle($nomArticle).' €,
<table cellpadding="0" cellspacing="2" border="0">
----, panier->getQteArticle($nomArticle).'\" size=\"4\" /></td>

</td>

<td align="center" class="intitule">'.$page->panier->getMontantArticle($nomArticle).' €</td>
<td align="center" class="intitule"></td>
</tr>';
}

$out .= '

<tr>
<td colspan="6">
<hr width="50%" /></td>
</tr>
<tr>
<td colspan="5" align="right" class="titrecell"> Total HT : </td>
<td align ="right" class= "intitule">'.$page->panier->getTotalFinalHT().' €</td>
</tr>
<tr>
<td colspan="5" align="right" class="titrecell"> TVA ('.$page->panier->getTVA().' %)
:</td>
<td align ="right" class= "intitule">'.$page->panier->getTotalFinalTVA().' €</td>
</tr>
<tr>
<td colspan="5" align="right" class="titrecell"> Total TTC : </td>
<td align ="right" class="intitule">'.$page->panier->getTotalFinalTTC().' €</td>
</tr>
<tr>
<td colspan="6" align="center"></td>
</tr>
<tr>
<td colspan="6"><hr width="50%" /></td>
</tr>
<tr>
<td colspan="2" align="center">

</td>
<td colspan="6" align="center">

</td>
</tr>
<tr>
<td colspan="6">
<hr width="50%" /></td>
</tr>
</table>
</fieldset>
</center>';
return $out;
}

function maj(&$page)
{
foreach ($_POST as $cle => $valeur)
{
if (preg_match("/suppr_(.*)/", $cle, $res))
$page->panier->supprimerArticle($res[1]);
if (preg_match("/qte_(.*)/", $cle, $res))
{
//ici on appel la nouvelle fonction qui change le prix de l'article.
$page->panier->setPrixTotArticle($res[1], $valeur);
}
}

if ($page->panier->getNombreArticle() <= 0)
{
$page->panier->destroy();
$page->panier = null;
}
}
?>
*******************************************************************

Voilà pour l'essentiel, j'espère avoir été assez claire sur mon problème.
Merci d'avance.
tgwada
Messages postés
1
Date d'inscription
jeudi 8 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2010

Bonjour, désolé de faire ressortir ce vieux forum mais j'ai un problême en ce qui concerne les frais de port.

il reste a 0 alors que j'ai effectuer toutes les modifs de merci51

est ce que qqlun peut m'aider?

merci d'anvance

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.