CLASS PANIER CADDIE

fg85 Messages postés 370 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 13 avril 2007 - 14 févr. 2005 à 23:20
 stephane - 10 mai 2019 à 22:00
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29499-class-panier-caddie

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
27 mars 2012 à 03:34
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
27 mars 2012 à 03:23
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
27 oct. 2010 à 16:20
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
2 avril 2010 à 22:04
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
lina22 Messages postés 34 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 25 août 2009
21 juil. 2009 à 15:40
bonjour,
en faite don mon cas je doit faire un panier de téléchargement par exemple quand j'affiche mes rapport ds une ihm je doit mettre une case que je sélectionne si je veux ce rapport et je continue de regarder mes rapport à chaque fois que je voie un qui m'intéresse je le sélectionne et à la fin je peux télécharger tout ceux que j'ai sélectionnée est ce que quelqu'un peut m'expliquer comment je peux faire sa... merci
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
12 janv. 2009 à 09:29
remplace la ligne ou se trouve la coche et le supprimer par ceci :
<td align="middle" class="intitule">[suppr_article.php?origine=consultation_panier.php&numserie='.$numserie.' ]</td>

n'oublie pas d'ajoujter une petite image de poubelle dans le répertoire images
Ncosy Messages postés 1 Date d'inscription jeudi 31 janvier 2008 Statut Membre Dernière intervention 12 janvier 2009
12 janv. 2009 à 03:11
hello salut à tous je suis tout nouveau en php; j'ai un problème avec ce source. j'ai un bug dans firefox, je n'arrive plus à supprimer les articles. si je coche et que je valide il ne passe rien. quelqu'un à déjà rencontré leproblème????? merci de votre aide
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
29 déc. 2008 à 16:30
oups, exact. Je corrige chez moi du coups! hahaha

Je t'en prie
smoggin Messages postés 4 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 26 mai 2007
29 déc. 2008 à 16:16
Merci pour cette réponse super rapide !

En bidouillant j'étais arrivée à quasiment la même chose par contre pour la fonction miseAJourQteArticle() il faut ajouter la ligne
##$this->nbTotarticle = $this->nbTotarticle + $diff;
après la ligne
##$diff = $quantite - $this->article[$numserie]['qte'];

parce que $diff est modifié avant $this->CalculTotal($diff); (par $diff *= $this->article[$numserie]['prix'];)

Merci de m'avoir aidé !:)
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
29 déc. 2008 à 16:00
non cela n'existe pas mais l'addition de cette fonction n'est pas compliquée.
Procède comme ceci :
function Panier($actif false, $tva 0) ajoute une ligne :
##$this->nbTotarticle = 0;

function destroy() ajoute une ligne :
##unset ($this->nbTotarticle);

function ajouterArticle() ajoute cette ligne :
##$this->nbTotarticle = $this->nbTotarticle + $quantite;
après la ligne
##$this->nbarticle++;

function miseAJourQteArticle() ajoute cette ligne
##$this->nbTotarticle = $this->nbTotarticle + $diff;
après la ligne
##$this->CalculTotal($diff);

et enfin crée ta fonction :
// Renvoie le nombre total d'article contenus dans le Panier
function getNombreTotArticle()
{
return ($this->nbTotarticle);
}
smoggin Messages postés 4 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 26 mai 2007
29 déc. 2008 à 15:38
Salut et merci pour cette source qui m'a bien dépanné jusque là ! :)

Je cherche par contre comment récupérer le nombre de total d'articles dans le panier (boucle sur quantité*numsérie). Il n'y a pas de fonction qui fait ça actuellement si ?

Merci !
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
23 oct. 2008 à 15:29
tu peux poser tes questions ici directement, personne ne va te manger. Et peut être que d'autres sont dans ton cas et pourrons profiter des réponses.
Mais une choses est sûre, la connaissance de php est importante tout de même pour comprendre le fonctionnement de la classe, mais à la lecture, avec les base de php tu peux comprendre facilement comment ça fonctionne.
N'hésite pas, pose tes questions
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
17 juin 2008 à 20:43
pourtant j'ai bien envoyé le mail cette aprem.
cs_Naomy Messages postés 5 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 26 juin 2008
17 juin 2008 à 18:18
j'ai utilisé la 1er solution, ça marche super !
merci LELAPINOU_69

ps: sauf erreur, je n'ai rien reçu de ta part par mail ??
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
17 juin 2008 à 14:55
Mais fais attention à ne pas dévier, ici on parle de la classe panier, sinon tu risque de voir ton message partir aux oubliettes... ;-)
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
17 juin 2008 à 14:54
[file.php?PHPSESSID=xxx&var=value ]


ça c la version de base
sinon tu as la version avec le css, tu fais 2 images (différentes).
dans ton css tu fais ceci

a.link{
block:display;
width:60px;
height:20px;
background-image:url(chemin de l'image1);
background-repeat:no-repeat;
}
a.link:hover{
background-image:url(chemin de l'image2);
}


et là du coup ton lien devient :

[file.php?PHPSESSID=xxx&var=value ]

d'une tu n'affiche pas ton image directement, et de 2 tu as un effet rollover sans alourdir ta page.
cs_Naomy Messages postés 5 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 26 juin 2008
17 juin 2008 à 13:15
Bonjour à tous,

[file.php?PHPSESSID=xxx&var=value link]

je souhaite mettre une image à la place de link

si qqu'un sait...

merci !
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
16 juin 2008 à 16:29
Première question : as-tu déjà fais du php couplé à MySQL. Question pour savoir comment aborder la chose.
Si tu veux un exemple, donne moi ton mail je t'envoie cela
cs_Naomy Messages postés 5 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 26 juin 2008
16 juin 2008 à 15:14
Bonjour à tous,

mon projet a pour but de créer la gestion d'un panier (ce qui est fait merci steph !)
ensuite chaque commande validée remplie une bdd
le pb c'est que je ne sais pas comment m'y prendre pour créer la bdd et introduire dans le code la connexion à mysql, les insert ...

merci pour votre aide
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
15 oct. 2007 à 11:53
tout à fait, c'est exactement comment ça que je comptais le faire. Mais merci de ton message, ça permet de voir que le source est suivi et que ma direction est pas totalement fausse...
Je vais gérer les différentes tva au niveau de ma base, et pour chaque article j'aurais un code tva, qui aidera à calculer le ttc par ligne...

tchuss!
nmat_fr Messages postés 6 Date d'inscription mardi 29 juin 2004 Statut Membre Dernière intervention 15 octobre 2007
15 oct. 2007 à 10:15
Bonjours,

Je veux pas faire genre lapalisse .....
Mais la seule solution est de gerer la tva à la ligne de commande et non pas en pied. Cad qu'il faud que chaque article ai sont propre taux de tva, qu'il soit mis dans la session et calculer à la ligne de façon individuelle. Donc la tva actuel ne servirai plus que pour le port.
J'espere que cela t'aidera mais je pense que tu y avais deja pensé.
Nicolas (bon courage) @+
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
14 oct. 2007 à 21:58
Hello, me voilà de retour.
Je cherche à faire une modif mais soit je ne vois vraiment pas comment soit je ne vois vraiment pas comment (oups!)
en effet jusqu'à présent je n'avais pas eu le cas, mais j'ai un client pour lequel j'ai monté son site autour de ce source, et il me pose une colle (pour moi, peut être pas pour d'autres), j'ai plusieurs catégories d'articles tous à 19.6 sauf une catégorie..... et là! kouak! je ne vois vraiement pas comment gérer plusieurss TVA. Car j'ai bien vu qu'à la création 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;
$this->port          = 0;
$this->typeport      = 0;
$this->portTVA       = 0;
}


la tva est automatiquement instensiée à 19.6, mais si j'ai une 5.5 dans la même commande comment pourrais-je faire???

Merci
nmat_fr Messages postés 6 Date d'inscription mardi 29 juin 2004 Statut Membre Dernière intervention 15 octobre 2007
25 sept. 2007 à 12:23
Désolé je suis un peu nul
Mais voila ce qui fallait que je fasse.

function majQteTotalArticles() {
$qteArticles = 0;
$this->port = 100;
if (true) { //(!empty($numserie) && $this->article[$numserie]) {
$this->port = 90;
foreach ($this->article as $numserie => $val) {

// Recalcul du nb articles global
$qteArticles += $this->article[$numserie]['qte'];
$this->port = 80;
}
if($qteArticles<=12)
$this->port = 20;
else {
$tmp = $qteArticles - 12;
$qteport = $tmp/6;
$qte = ceil($qteport);
$this->port = 20 + 5*$qte;
}
if($this->totalHT > 300)
$this->port = 0.00;
}

}
Puis dans
function ajouterArticle($numserie, $quantite, $montantHT = 0.00) {
if (!empty($numserie)) {
if ($this->article[$numserie]) {
$this->article[$numserie]['qte'] += $quantite;

}

else {
$this->article[$numserie]['qte'] = $quantite;
$this->nbarticle++;
}
if (isset($this->calculmontant) && $this->calculmontant == true) {
$this->article[$numserie]['prix'] = $montantHT;
$this->CalculMontantArticle($numserie, $this->article[$numserie]['prix'], $quantite);

$this->CalculTotal(($this->article[$numserie]['prix']*$quantite));
//$this->CalculTotal($this->article[$numserie]['montantHT']); erreur de calcul solutionner par steph666

}
$this->majQteTotalArticles();
}

}
et dans consultation_panier.php
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)) $page->panier->miseAJourQteArticle($res[1], $valeur);
$page->panier->majQteTotalArticles();
}

if ($page->panier->getNombreArticle() <= 0) {
$page->panier->destroy();
$page->panier = null;
}
}
nmat_fr Messages postés 6 Date d'inscription mardi 29 juin 2004 Statut Membre Dernière intervention 15 octobre 2007
25 sept. 2007 à 12:03
Bonjour @ tous,

Merci pour cette reponse rapide et en plus ca marche. encore merci.
Je reviens vers vous car j'ai v raiment du mal avec les sessions .......

Pour le calacul de mes frais de port j'ai besoin de la quantité global d'article et non pas du nombre d'article different contenu dans le panier.
J'ai creer une fonction qui m'additionne les quantité de chaque ligne dans panier.class, Mais cela me renvoie zero systematiquement, je pense que je ne lance pas cette fonction au bon moment

Voici le code de ma fonction.
function majQteTotalArticles() {
$qteArticles = 0;
$this->port = 0;
if (!empty($numserie) && $this->article[$numserie]) {

foreach ($this->article as $numserie => $val) {

// Recalcul du nb articles global
$qteArticles += $this->article[$numserie]['qte'];

}
if($qteArticles<=12)
$this->port = 20;
else {
$tmp = $qteArticles - 12;
$qteport = $tmp/6;
$qte = ceil($qteport);
$this->port = 20 + 5*$qte;
}
if($this->totalHT > 300)
$this->port = 0.00;
}

}
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
24 sept. 2007 à 18:31
Merci pour tous vos compliments ça fait toujours plaisir.

Quant aux évolutions, je serais impatient d'y jeter un œil.
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
24 sept. 2007 à 17:21
Bonjour,

Moi comme lapinou je profite de ton passage steph pour te remercier.
Cette source m'a permie d'aborder les class et je t'en suis reconnaissant.

bonne continuation a tous.

Lapinou, toujours aussi actif a ce que je vois ;)
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
24 sept. 2007 à 17:05
Haaaaaaaaaaa Bonjour Steph666, content de te voir pointer le bout de ton nez, non pas pour t'affliger de remarques mais pour féliciter ce top code.
Merci et bravo.

Oui certains on fait évoluer le source, notamment j'ai ajouter la possibilité d'ajouter le port (avec différents choix) et également de pouvoir générer la commande en pdf et l'envoyer par mail à la validation de celle ci. Dès que j'ai un moment je mets ça en contribution.

Pour l'erreur en question je me suis pas fais ch.... j'ai remplacer la ligne en question simplement par : $this->CalculTotal(($this->article[$numserie]['prix']*$quantite)); là au moins je suis sûr qu'il se trompe pas.

@+

Et encore merci
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
24 sept. 2007 à 16:38
Bonjour,

Je n'ai pas eu trop le temps de répondre, ni de regarder tous les coms depuis un moment (et il y en a en masse : quel succès ^^), mais oui en effet il y a une erreur sur la fonction :

function ajouterArticle($numserie, $quantite, $montantHT = 0) {
if (!empty($numserie)) {
if (isset($this->article[$numserie])) $this->article[$numserie]['qte'] += $quantite;
else {
$this->article[$numserie]['qte'] = $quantite;
$this->nbarticle++;
}
if (isset($this->calculmontant) && $this->calculmontant == true) {
$this->article[$numserie]['prix'] = $montantHT;
$this->CalculMontantArticle($numserie, $this->article[$numserie]['prix'], $quantite);
$this->CalculTotal($this->article[$numserie]['montantHT']);
}
}
}

Il faut remplacer :
$this->CalculTotal($this->article[$numserie]['montantHT']);
par :
$this->CalculTotal($quantite * $montantHT);

Merci d'avoir fait remarquer cette erreur.

Stéph.
p.s.: vous pouvez éventuellement m'envoyer vos modifications, évolutions de la classe pour ceux qui en ont fait, ou tous les bugs répertioriés, je pourrais faire un mix et poster tout ça.
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
24 sept. 2007 à 16:28
J'ai eu le même soucis au début, mais je ne me souviens plus ce que j'ai fais pour y remédier. Peux tu mettre le source initial utilisé par le fichier ajout_panier.php, car il me semble que c'est de là que cela vient.
nmat_fr Messages postés 6 Date d'inscription mardi 29 juin 2004 Statut Membre Dernière intervention 15 octobre 2007
24 sept. 2007 à 14:52
Salut @ tous,

Super code !
Mais .............
J'ai un probleme que je n'arrive pas à solutionner. Liste articles nickel j'ajoute au panier j'ajoute au panier ....
Puis je visualise mon panier et je modifie les qté -> recalcule jusque la tout ca bien !! c deja super
Cependant si je reviens à la liste des articles et que j'ajoute un des articles deja present dans le panier, la, ca devient n'importe quoi. Le montant de la ligne est doublé !!?? tous est faux !!
et je comprend pas pourquoi.
Merci d'un coup de pouce.
Nicolas
antony982 Messages postés 1 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 14 août 2007
14 août 2007 à 01:41
source bien sympa ;)
pour résoudre les messages d'erreur sous easyphp 1.8 (php5)

Notice: Undefined index: Reference2 in c:\easyphp1-8\www\panier\panier.class.php on line 146
Notice: Undefined index: montantHT in c:\easyphp1-8\www\panier\panier.class.php on line 191
Notice: Undefined index: montantTTC in c:\easyphp1-8\www\panier\panier.class.php on line 192

dans panier.class.php :
Remplacer
// Calcule le montant Total HT et TTC par article
function CalculMontantArticle($numserie, $prix, $qte) {
$this->article[$numserie]['montantHT'] += $prix * $qte;
$this->article[$numserie]['montantTTC'] += $prix * $qte * (1 + ($this->TVA / 100));
}

Par
// Calcule le montant Total HT et TTC par article
function CalculMontantArticle($numserie, $prix, $qte) {
if (isset($this->article[$numserie]['montantHT']) && ($this->article[$numserie]['montantTTC']))
{
$this->article[$numserie]['montantHT'] += $prix * $qte;
$this->article[$numserie]['montantTTC'] += $prix * $qte * (1 + ($this->TVA / 100));
}
else
{
$this->article[$numserie]['montantHT'] = $prix * $qte;
$this->article[$numserie]['montantTTC'] = $prix * $qte * (1 + ($this->TVA / 100));
}
}

Remplacer
if ($this->article[$numserie]) $this->article[$numserie]['qte'] += $quantite;

Par
if (isset($this->article[$numserie])) { $this->article[$numserie]['qte'] += $quantite; }

Merci pour la source
peterklm Messages postés 15 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 5 décembre 2005
7 août 2007 à 02:34
merci, je vais m'y mettre.
Justement je voulais eviter cette methode, en croyant qu'il en existait mieux.
moi, je voulais eviter de créer dans ma bdd une ref pour chaque couleur d'article, et chaque taille d'article.

merci quand meme.
@ très bientôt.
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
6 août 2007 à 15:11
Pour que cela fonctionne, ton 'numserie' doit forcément être unique, donc ton 'numserie' doit correspondre à 'ARTICLE+TAILLE+COULEUR', donc rien de mieux que de faire un fichier 'TAILLE' un 'COULEUR' un 'ARTICLE' et un 'REF' qui contient les jointures et qui te servira au remplissage de ton panier.
A mon sens c la meilleur solution, ensuite les requetes seront simples à mettre en place, rien de bien compliqué, mais au moins ce sera propre.
peterklm Messages postés 15 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 5 décembre 2005
6 août 2007 à 14:57
salut,
merci pour ta reponse, justement dans ma base j'aurai qu'une reference pour un article pour lequel j'aurai plusieurs couleurs, et plusieur tailles.
je pense que ça deviendra lourd de créer une ref pour chaque couleur, et chaque taille d'article dans la BDD

sinon, quelle est la meilleure soluce pour mieux gerer tout ça ?
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
6 août 2007 à 14:48
Tout dépend de comment tu gères tes articles. Mais cela doit en premier lieu être bien structuré au niveau de ta base de donnée. Si ta référence ne tient pas compte de la taille, tu vas au delà de pas mal de boulot, mais si déjà à la base ta référence correspond à l'article/taille tu ne devrait pas avoir de soucis, car en sélectionnant la réf, et la taille tu devrait pouvoir trouver le 'numserie' correspondant.
Si tu as un fichier 'ARTICLE' et un fichier 'TAILLE' tu devrait avoir un fichier joignant les 2 qui contiendrait toutes les autres info, dont le 'numsérie'.
peterklm Messages postés 15 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 5 décembre 2005
6 août 2007 à 14:26
salut à tous,
je fais face à un problème sur ce code,
Lors de passer une commande pour une meme reference dans le panier comment rajouter d'autres articles
de la meme couleur meme taille dans mon panier.
ex: pour article ref304 je veux un tee-shirt de taille XL, un autre de taille S
et pour cette meme ref304 je veux un tee-shirt de couleur jaune, un autre de couleur bleu.
j'ai essayé mais aucun resultat.

merci à vous de me renseigner.
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
4 juin 2007 à 20:25
Bon plan, c'est ou qu'on signe ??
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
4 juin 2007 à 18:53
désolé pour le débordement....
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
4 juin 2007 à 18:35
hahaha tu achètes pour quelques 100000?, avec les bénef je paie les impôts, ensuite avec ce qui me reste, je paies mes charges, les fournisseurs, le loyer, les employés. Ensuite q'il reste quelque chose, je fais une brocante,j'achète un panier, je vais chez Lidl, je prend des bonbon, des gâteaux et autres mets succulents, et je te fais ton panier garnis.
voilà.
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
4 juin 2007 à 17:46
Mais c'est comment qu'on gagne un panier garnis ???
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
4 juin 2007 à 09:39
quel est exactement ton besoin.
Si c'est simplement l'enchainement pour utiliser un panier de la sélection des articles au paiement, on peut dire qu'en général ça se suit ainsi :
- sélection des articles
- remplissage du formulaire des coordonnées
- sélection du moyen de transport (si plusieurs solutions sont proposées)
- paiement via carte bleu
- récapitulatif de commande, avec envoie d'email également, et possibilité d'impression de la commande.
Si ce n'est pas ton soucis, donne nous plus de précisions.
cs_tadjidine Messages postés 7 Date d'inscription lundi 26 mars 2007 Statut Membre Dernière intervention 28 septembre 2010
4 juin 2007 à 06:55
salut pr tous je suis entrain de realisé un projet de fin d'etude sur service d'achat en ligne en faite je suis un peu blocké sur le coté de cre les paniers en faite pr savoir coment le deroulement se fait pr tt les etapes du paner merci bcp pr votre aide
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
27 avril 2007 à 23:36
Salut merci51. Comme tu dis il y a de la vie. Le script est toujours utilisé, et je l'utilise sur tous les sites que je fais avec une boutique. Je le connais maintenant, et je peux le modifier à ma guise.
Pour le hors taxe, c'est très souvent demandé dans les factures par les pros, alors il va de soit qu'on le met.
Tu as fini ton site depuis? Tu es sur autre chose?
bonne continuation à ce script, et aux futurs utilisateurs, n'hésitez pas à venir, mais n'hésitez pas à plonger dans le code. En lisant vous comprendrez beaucoup de choses.

Cho!!!
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
27 avril 2007 à 20:13
Bonjour,

Je viens pour ne poser aucune question ...
Juste un bonjour en passant ...
Salut LELAPINOU_69 !!

Y'a de la vie ici !!

Et c'est vrai qu'il est bien ce script
avec un peu de boulot on peu vraiment faire un truc chouette
Mais le coup du Hors taxe plus ça va plus j'oublis
regardez lez autres sites, y'a personne en hors taxe (bon queques pro ...)

Bon courage a tous et faites vous plaisir
a+
fahr451 Messages postés 8 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 21 août 2009
27 avril 2007 à 09:25
bon j'ai trouvé mon bonheur dans vos réponses antérieures... mille excuses au webmaster de phpcs... vous pouvez éventuellement effacer ces deux dernières interventions.
fahr451 Messages postés 8 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 21 août 2009
27 avril 2007 à 08:50
Super c'est encore moi (ne me jettez pas de pierres).
Tu intègres dans les variables une référence... les variables de base j'arrive à les utiliser (numserie, qte et prix...) mais je n'arrive pas à comprendre comment je peux en plus trimballer une référence (nom du produit en texte) dans mes variables de session...
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
26 avril 2007 à 15:36
si ça t'a aidé tant mieux.
Bonne continuation.
fahr451 Messages postés 8 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 21 août 2009
26 avril 2007 à 14:42
je viens de comprendre, grâce à ton site... désolé d'avoir mis le temps :)
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
26 avril 2007 à 14:18
alors explique moi exactement quel est ton problème, puisque les valeurs tu les as, les nom des variables tu les as.
fahr451 Messages postés 8 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 21 août 2009
26 avril 2007 à 13:26
oui mais en fait pour le site sur lequel je travaille, après que le client (déjà identifié) aie inséré des produits dans son panier, je dois juste insérer dans la base de données les références commandées, les quantités et le prix total...
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
26 avril 2007 à 12:02
l'insertion de la base?? Il n'y a pas, à mon avis d'insertion dans la base de ton panier, sauf une fois que la commande à été générée et que tu la sauvegarde.
il faut que tu crée un système de validation de panier à ta sauce. Le panier n'a pas besoin d'être sauvegardé dans la base, il l'est en tant qu'objet, donc consultable partout sur ton site à partir du moment où tu lis la classe.
Le procéssus standard veut que lorsque la personne a terminé son panier, tu lui permettes de remplir un forulaire indiquant son nom,prénom adresse, ou de se logger si c'est un client. Ensuite de choisir un mode de livraison, enfin de payer, et une fois que tu as le retour de paiement (normalement immédiat en CB ou différé en chèque) tu crée ton enregistrement Commande et ligne commande.
Voilà. Tu peux regarder ce que j'ai fais (et je me répète, c'est assez simplet) sur http://www.eclats-de-lumiere.com/boutique.htm, rempli un panier, et vois ce qui suit, ça te donnera une idée.
Si tu as encore besoin d'aide n'hésite pas...

PS: Merci encore à Steph666!
fahr451 Messages postés 8 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 21 août 2009
26 avril 2007 à 11:43
Bon après je ne vous embête plus ^^
En fait j'arrive à afficher mon panier, sans problème. Ensuite se pose le problème de la validation de ce dernier... et l'insertion dans la base...
dans le consultation panier il y a bien le bouton qui permet de mettre à jour le panier en recalculant à partir de la quantité ou de la suppression, mais comment ajouter un comprtement qui va permettre de valider tout ça ?
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
25 avril 2007 à 15:37
Hahaha petit malin. ;-)
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
25 avril 2007 à 15:33
Hop, je met le 100ème commentaire :D
fahr451 Messages postés 8 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 21 août 2009
25 avril 2007 à 14:47
Merci !!! c'est exactement ce qui va me permettre d'avancer ;)
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
25 avril 2007 à 14:45
tiens voici mon source à cet effet.

$nombre=4;
if (!$limite) $limite=0;

//connexion à la base
$link = mysql_connect($host,$util,$pass) or die('Erreur 1 : '.mysql_error());
mysql_select_db($db) or die('Erreur 2:'.mysql_error());

//compte le nombre d'enregistrements total de la table
$select = 'SELECT COUNT(id_art) FROM produit';

$result = mysql_query($select,$link) or die('Erreur 3 :'.mysql_error());
$row = mysql_fetch_row($result);
$total = $row[0];

$VerifLimite = VerifLimite($limite,$total,$nombre);
if (!$VerifLimite)
{
$limite=0;
}

//sélectionne la portion d'enregistrements à afficher
$select = 'SELECT id_art,des_art,photo_art,prix_art,desc_art_mini,new_art,stock_art FROM produit LIMIT '.$limite.','.$nombre;
$result = mysql_query($select,$link) or die('Erreur 4 : '.mysql_error());

//si on a récupéré un résultat on l'affiche
if ($total)
{
//début du tableau
while($row =mysql_fetch_array($result))
{
echo '<td>';
echo '<!--DWLayoutTable-->
----

<table border="0" cellpadding="0" cellspacing="0">
----, <!--DWLayoutTable--></td>
<!--DWLayoutTable-->,
<!--DWLayoutTable-->,
<!--DWLayoutTable-->,

----

<!--DWLayoutTable-->,
'.$row['des_art'].'

<table border="0" cellpadding="0" cellspacing="0" width="255">
----, </td>
'.$row['desc_art_mini'].'

'.$row['prix_art'].' ?

<!--DWLayoutTable-->
----

';
if ($row['stock_art']=='1')
{
echo ', ';
}
else
{
echo '</td>';
}
echo '';
if ($row['new_art']=='1')
{
echo ', ';
}
else
{
echo ' </td>';
}
echo ',
,


<!-- /in -->
<td><!--DWLayoutTable--></td>
</tr>
<tr valign="bottom">
<td><!--DWLayoutTable--></td>
<td><!--DWLayoutTable--></td>
</tr>
<tr>
<td><!--DWLayoutTable--></td>
<td><!--DWLayoutTable--></td>
<td><!--DWLayoutTable--></td>
<td><!--DWLayoutTable--></td>
</tr>
<tr>
<td height="20" colspan="4" valign="top"><!--DWLayoutEmptyCell--> </td>
</tr>
</table>
<!-- /left -->
</td>';
if ($row = mysql_fetch_array($result))
{
echo '<td width="270">
<!--DWLayoutTable-->,
<!--DWLayoutTable-->,
<!--DWLayoutTable-->,
<!--DWLayoutTable-->,

----

<!--DWLayoutTable-->,
'.$row['des_art'].'

<table border="0" cellpadding="0" cellspacing="0" width="255">
----, </td>
'.$row['desc_art_mini'].'

'.$row['prix_art'].' ?

<!--DWLayoutTable-->
----

';
if ($row['stock_art']=='1')
{
echo ', ';
}
else
{
echo '</td>';
}
echo '';
if ($row['new_art']=='1')
{
echo ', ';
}
else
{
echo ' </td>';
}
echo ',
,


<!-- /in -->
<td><!--DWLayoutTable--></td>
</tr>
<tr valign="bottom">
<td><!--DWLayoutTable--></td>
<td><!--DWLayoutTable--></td>
</tr>
<tr>
<td><!--DWLayoutTable--></td>
<td><!--DWLayoutTable--></td>
<td><!--DWLayoutTable--></td>
<td><!--DWLayoutTable--></td>
</tr>
<tr>
<td height="20" colspan="4" valign="top"><!--DWLayoutEmptyCell--> </td>
</tr>
</table>
<!-- /left -->
</td>';
}
echo ' </tr>';
echo ' </table>';
echo '</td>';
}
}

mysql_free_result($result);

ce code me permet d'afficher 4 articles / page,
en dessous j'affiche les pages qu'il y a, cela me permet de naviguer.
Si ça t'aide, c'est bien.
@plouch
fahr451 Messages postés 8 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 21 août 2009
25 avril 2007 à 14:23
Bonjour,
Help !
je voudrais savoir comment il est possible de lister des produits venant d'une base de données dans liste_article.php... Le out de ce fichier semble tout interpréter en html ?
Merci d'avance !!
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
17 avril 2007 à 09:03
Le source que tu mets là n'est pas celui de l'ajout de l'article au panier, mais celui qui te réalise le listing de ton panier.
Sur ta page "Liste_articles.php" tu as un lien sur chaque article qui commence par 'ajout_article.php?..."
Ce lien te montre où se situe le source d'ajout d'article au panier. C'est ce source que tu dois vérifier me semble -t-il.
smartnouse Messages postés 1 Date d'inscription dimanche 11 mars 2007 Statut Membre Dernière intervention 16 avril 2007
16 avril 2007 à 21:02
Bonjour,
Pour commencer cette classe est vraiment nickel, merci bcp ^^
Cependant j'ai un petit pb, je n'arrive pas à ajouter plusieurs articles dans mon panier, il ne prend en compte que le dernier produit ajouté.

Il s'agit bien de la boucle suivante ?

foreach ($page->panier->article as $val => $numserie) {
$out .= '
<tr>
<td>'.$val.'</td>
<td align="right">'.$page->panier->getPrixArticle($val).' €</td>
<td align="right">
,


</td>
<td align="right" class="intitule">'.$page->panier->getMontantArticle($val).' €</td>
<td align="right" class="intitule">'.$page->panier->getMontantTTCArticle($val).' €</td>
<td align="middle" class="intitule"></td>
</tr>';
}

Merci d'avance!
spiritofmarquito Messages postés 8 Date d'inscription samedi 27 janvier 2007 Statut Membre Dernière intervention 1 mai 2009
10 mars 2007 à 09:51
Bonjour, une petite précision il y a pas de base de donnée ?

Je recherche un script de caddie pour vendre des vêtements avec les options taille et couleur
Mais je ne trouve rien ?
Merci pour vos conseils
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
8 févr. 2007 à 09:15
voici le mien http://www.eclats-de-lumiere.com/boutique.htm
voilà ce que j'ai pu faire avec mes petites connaissances. j'ai donc modifier le fonctionnement des frais de port qui existe par défaut mais pas exploité. J'ai fais aussi une modif dans ma base pour gérer le stock, mais là c'est pas encore en place, la gestion de stock actuelle est gérée par l'admin directement.
Donc juste pour te montrer ce que ça donne. Mais d'autres en ont fait de plus complètes....
C'est une bonne source, pas totalement parfaite, mais c'est ce qui fait que l'on peut mettre la main à la pâte!
@+
peterklm Messages postés 15 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 5 décembre 2005
7 févr. 2007 à 19:51
petite question tte bete, je voudrais savoit si quelqu'un à deja realisé un site marchand à l'aide de cette classe panier meme titre perso. Si oui une url pour voir ce que ça donne.
merci.
corsonr Messages postés 8 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 1 décembre 2006
1 déc. 2006 à 15:18
oups petite erreur dans l'appel de la fonction qui retourne la couleur:

et créer la fonction d'appel de la couleur:
// Renvoie la couleur de l'article $numserie
function getCouleurArticle($numserie) {
return ($this->article[$numserie]['couleur']);
}

mais bon je pense que vous auriez deviner assez vite le pb, puisque j'ai fait un simple copier coller en oubliant de modifier le texte.... he he he !
corsonr Messages postés 8 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 1 décembre 2006
1 déc. 2006 à 15:15
hello, bon alors j'ai la solution pour récupérer d'autres infos telles que la taille d'un vêtement ou la couleur ou tout autre info sur le produit à partir d'une liste déroulante qui doit apparaitre dans la consultation du panier. Pour commencer il faut reprendre les étapes suivantes (que j'ai indiqué dans un message plus récent mais que je remets ici):

INFOS POUR RAJOUTER LE NOM DU PRODUIT ET SA COULEUR A PARTIR D'UNE LISTE DEROULANTE

-> dans panier.class.php
-------------------------------------------------------------------------------------------

modifier la fonction suivante:
// Ajoute un article dans le Panier
function ajouterArticle($numserie, $quantite, $montantHT = 0, $nom, $couleur) { // MODIF ICI rajouter les variables
if (!empty($numserie)) {
if ($this->article[$numserie]) $this->article[$numserie]['qte'] += $quantite;
else {
$this->article[$numserie]['qte'] = $quantite;
$this->nbarticle++;
}
if (isset($this->calculmontant) && $this->calculmontant == true) {
$this->article[$numserie]['prix'] = $montantHT;
$this->CalculMontantArticle($numserie, $this->article[$numserie]['prix'], $quantite);
$this->CalculTotal($this->article[$numserie]['montantHT']);
}
}
$this->article[$numserie]['nom'] = $nom; // CODE A RAJOUTER pour le nom du produit
$this->article[$numserie]['couleur'] = $couleur; // CODE A RAJOUTER pour la couleur du produit
}

et créer la fonction d'appel du nom:
// Renvoie le nom de l'article $numserie
function getNomArticle($numserie) {
return ($this->article[$numserie]['nom']);
}

et créer la fonction d'appel de la couleur:
// Renvoie le nom de l'article $numserie
function getNomArticle($numserie) {
return ($this->article[$numserie]['nom']);
}

-> dans ajout_panier.php
-------------------------------------------------------------------------------------------

rajouter dans l'affectation des variables la ligne:
$nom = isset($_REQUEST["nom"]) ? $_REQUEST["nom"] : "";
$couleur = isset($_REQUEST["couleur"]) ? $_REQUEST["couleur"] : "";

et rajouter les variables $nom et $couleur lors de l'appel de la fonction dans le programme principal

if (!Empty($numserie) && $qte > 0) {
if ($prix > 0) {
$var->calculmontant = true;
$var->ajouterArticle($numserie, $qte, $prix, $nom, $couleur); // LES VARIABLES SONT RAJOUTEES ICI
} else $var->ajouterArticle($numserie, $qte);

$_SESSION["panier"] = serialize($var);
}
if ($origine) {
Header("Location: $origine");
exit;
}

-> dans liste_article.php
-------------------------------------------------------------------------------------------
rajouter dans le lien d'insertion le code suivant
&nom=nom du produit&couleur=\'+document.form1.couleur_p_1.options[document.form1.couleur_p_1.selectedIndex].value+\'

ici le formulaire s'appelle form1 et la liste déroulante a pour valeur "name" couleur_p_1 et le code de la liste déroulante est par exemple (dans la page liste_article.php):
<select name="couleur_p_1">
<option value="noir">black</option>
/select>

-> dans consultation_panier.php
-------------------------------------------------------------------------------------------
pour faire apparaitre la couleur et le nom du produit dans la page consultation_panier.php

utiliser les valeurs: '.$page->panier->getCouleurArticle($numserie).' et '.$page->panier->getNomArticle($numserie).' a placer a l'endroit où vous voulez faire apparaitre les valeurs




Donc avec ca vous pourrez avancer pas mal, vos développements, dès que le site que je code est ok, je vous envois le lien pour voir ce qu'il est possible de faire (miniature des produits sur la page consultation etc...)

Bon weekend !
cs_babar76 Messages postés 9 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 30 novembre 2006
30 nov. 2006 à 22:53
bonsoir Corsonr

si tu as lu les posts je recherche la même chose que toi.
Dans le select, à l'évement onChange qui affiche une fenêtre donnant la valeur sélectionnée.
la procédure fait le retour de cette variable return ($tail) ,mais ensuite dans la requête
la variable $tail est vide.

si quelqu'un à la réponse? merci, car aprés cela la souce géniale de Steph666 sera complète.
corsonr Messages postés 8 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 1 décembre 2006
30 nov. 2006 à 17:32
sinon tant que j'y suis personne ne sait comment ajouter une valeur provenant d'une liste déroulante via le lien d'inclusion des valeurs ? soit dans ce lien la:

<a href="#" onClick="document.location.href=\'ajout_panier.php?numserie=HTSML_01&qte=\'+document.form1.qte_1.value+\'&prix=19.90...

du fichier liste_articles.php

afin de récuper la valeur dans consultation_panier.php

car je fais un site qui vend des vetements et je veux inclure la taille et la couleur des vêtements, tout se passe bien quand je mets directement les valeurs dans le lien ci dessous avec les variables telles que $taille ou $couleur mais quand je demande d'aller chercher la valeaur depuis le formulaire..... je n'ai rien !

si quelqu'un a la réponse ! sinon je continue de chercher
corsonr Messages postés 8 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 1 décembre 2006
30 nov. 2006 à 17:14
a voir le code de plus pres il semble que l'auteur avait plus ou moins prévu que les frais de port pouvaient être assujétis à la TVA mais pour le moment je continuer de modifier pour arriver a ce que je souhaite vraimet, dès que tout est opérationnel je poste les infos !
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
30 nov. 2006 à 17:11
bonjour

ça nous interresse tous !!

poste tes modifs, fais partager l'info !!!

merci à toi pour ta contribution
corsonr Messages postés 8 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 1 décembre 2006
30 nov. 2006 à 11:49
hello, ca fait longtemps que je n'avais pas retravaillé sur ce code et il me semble qu'il y a un gros problème que j'ai du modifier pour le codage que je réalise actuellement, en effet la TVA est calculée en prenant en compte les frais de port pourtant il n'y a pas de TVA sur les frais deport en France, il y a des modifs a faire a ce niveau la, je les ai effectué si ca intéresse quelqu'un !
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
24 nov. 2006 à 10:17
Steph666 << SUPER STAR >>

Merci et encore MARCI !!!!!!
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
24 nov. 2006 à 09:08
Petit message pour remercier encore Steph666 pour son source.
Après quelques adaptations, quelques modifications : intégration à une base MySQL, intégration d'un système de paiement, intégration d'une gestion des Frais de port, son source est devenu un vrai source E-commerce, qui ne cesse de s'améliorer grâce à tous ceux qui y participent.

Donc rien que pour ça, MERCI!
cs_babar76 Messages postés 9 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 30 novembre 2006
23 nov. 2006 à 22:46
merci Lelapinou_69, ton analyse est bonne.
le onChange attend un évenement et ne rend pas la variable.

Pour vérifier le fonctionnement je faisait ouvrir une fenêtre Alert qui affichait
l'option chosit grace à un script javascript.Si ce script renvoie $tail dans return
peut-être que ça pourrait fonctionner.

Sur ta bonne idée je vais faire le test... à plus tard
et merci de ton attention.
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
21 nov. 2006 à 09:17
ton soucis, enfin d'après ce que je peux voir sur le code, et que je connais... à aucun moment tu n'initialise la variable $tail, il est donc pour moi évident qu'elle soit vide. Car il me semble que le OnChange est simplement un événement, ce qui veut dire qu'il attend une fonction ou une procédure à exécuter et non une variable. Enfin je peux me tromper.
Par contre j'ai fais un traitement similaire et c bien le name du select 'taille' que je teste et non une autre variable. Je ne m'embête peut être pas, mais je suis certain qu'il y aura qqchose.
cs_babar76 Messages postés 9 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 30 novembre 2006
21 nov. 2006 à 00:35
bonsoir Merci51

<form name="checknum" action="ajout_panier.php?numserie=$tail$article&taille=$tail&qte=$qte&prix=$pxht&origine=index.php" method="post" onSubmit="return checkban()">

<select name="taille" onchange='$tail' >";

$sql3 = "SELECT id_taille_produit, taille_produit FROM $table_taille_produit where id_prod='$article' ";
$sql3 = mysql_db_query($base,$sql3);
while ($site3=mysql_fetch_array($sql3))
{
echo"<option value="$site3[taille_produit]""; echo"selected"; echo"> $site3[taille_produit] ";
}

je t'ai mis un morceau de code qui envoie les varibles au panier.On fait une requête à la table taille_produit, qui contient pour chaque id_produit les tailles corespondantes pour les afficher et selectionner la taille désirée.
la fonction checkban() contrôle si la quantité saisie n'est égale à 0 et affiche un message.

Le problème rencontré est le suivant : la variable $tail est vide.Mais dans le requête si j'écris .php?numserie=$article&taille&qte=$qte...etc la valeur de la donnée taille s'inscris bien dans panier.
Dans cette requête si je change taille en taill cela ne fonctionne plus car elle est distinct du name de la
balise select.

Comment peut-faire pour que la variable $tail recoive bien la valeur de la donnée taille?

J'espère que c'est un peut plus clair, et que tu vas pouvoir trouver le bug.

Merci d'avance de ton précieux temps que tu nous accordes.;))
Comment faire pour que la valeur $tail ne soit pas vide?
cs_babar76 Messages postés 9 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 30 novembre 2006
20 nov. 2006 à 23:55
bonsoir merci51 ,merci d'essayer de suivre...

ta solution proposée fonctionne si on --> php?numserie=$tail$article
si on écrit -->php?numserie=$article$tail ça ne fonctionne pas il est impossible de faire la raz du panier car un espace s'installe
ex si $article =15 $tail=xxl --> on a 15 xxl alors que $tail$article --> xxl15 pas d'espace qui s'est créé et la raz du panier fonctionne.
Plus rien à dire sur la source car elle est superbe.
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
20 nov. 2006 à 16:22
j'ai pas tout compris .....
cs_babar76 Messages postés 9 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 30 novembre 2006
19 nov. 2006 à 22:28
merci à toi merci51 de suivre nos égarement. C'est bien l'espace qui bloque.
J'ai essayé les guillemets ,les points. Ce que j'ai c'est que j'ai inversé les 2 variables
et il ny a plus d'espace, et le panier se vide bien même si la variable $tail contient des lettres.
numserie=100a+$article ou 100a$article ça fonctionne

numserie=$article+100a ou $article+100a ça ne fonctionne pas
Pouquoi j' en sais rien?

dans mon programme je récupère la donnée de la taille d'une balise select:
<select name\*taille\* onchange='$tail'>
je pensais que ma donnée était $tail mais il n'en est rien:
en fait j'ai php?numserie=$article&taille=$tail $tail est vide et la vrai donnée c'est taille

si j'écris php?numserie=taille$article si $article=15 dans le panier j'ai taille15
existe t-il une syntaxe particulière pour ce type de variable?

je galère depuis longtemps alors cette source est géniale.

un grand merci surtout que je m'explique pas trés clairement.
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
18 nov. 2006 à 21:09
Si ton probleme releve de la concatenation de variable

tu devrais peut eetre ecrire

numserie=$article.'100'.&etc

sinon je vois pas
cs_babar76 Messages postés 9 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 30 novembre 2006
18 nov. 2006 à 20:42
je n'ai pas de message d'erreur,il exécute le programme, sans vider le panier.
Mais je crois savoir ce qui pose problème.

dans le requête d'envoi j'ai fait cet essai .php?numserie=$article+100&etc..
donc dans le panier s'affiche 15 100 .Je pense que c'est l'espace qui bloque la raz
du panier.
Mais faire $article+$tail est-ce correct au niveau code
(la 1ere est du type varchar l'autre text) .
Sinon y aurait-il une autre solution de code?
Merci de ton aide et de ton attention.
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
16 nov. 2006 à 23:13
Bonsoir, impossible de vider le panier ?
pourtant sur la version source il n'y a pas de probleme de ce coté ...

As tu un message d'erreur ?

je voulais dire pour ceux qui chercherais ...
LES FRAIS DE PORT !!! (merci le_lapinou69 !!!)

>>j'ai ajouté quelques lignes à ajout panier.php :

$type = 'colie_poste';
$port = 12.45;

if (!Empty($port)) {
$var->ajoutPort($port,$type);

>>AVANT :

$_SESSION["panier"] = serialize($var);
}


et à la place de 'à déterminer' dans consultation panier il faut mettre

'.$page->panier->getLivraison().' €

et le tour est joué !!!

encore merci lapinou

et bon code à vous
cs_babar76 Messages postés 9 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 30 novembre 2006
16 nov. 2006 à 19:44
merci à toi merci51.
ton idée est bonne. A l'envoi de la requête j'ai mis .php?numserie=$article+£tail $tail étant la variable de la taille ; ça fonctionne mais il est impossible de vider le panier .Si tu as une solution pour le panier je suis preneur.

Merci pour tes précieux conseils.
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
11 nov. 2006 à 22:01
Je crois que c'est ta reference qui devrais etre modifiée
ref=15 et de taille 42 deviendrais ref=15.42

et la si j'ai pas deis une grosse Co****e, ça marche..
cs_babar76 Messages postés 9 Date d'inscription vendredi 29 août 2003 Statut Membre Dernière intervention 30 novembre 2006
11 nov. 2006 à 21:52
bravo Steph666 pour cette source et merci aux membres du forum car cela m'a permis d'ajouter une nouvelle donnée au l'occurence une taille (site textile) provenant d'un select déroulant .Tout cela fonctionne parfaitement.

je demande de l'aide pour modifier le code pour avoir un article par exemple de ref=15 et de taille 42 ne vient pas écraser la ligne ref=15 et de taille 44 mais crée une autre ligne.
J'ai fait des essais dans la function(ajouterArticle)avec If mais ça ne fontionne pas
merci d'avance et encore bravo
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
8 nov. 2006 à 12:19
MP ...
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
8 nov. 2006 à 12:04
Désolé mais jen'ai rien eu...
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
8 nov. 2006 à 11:39
Salut ..
sauf erreur je t'ai envoyer un mail chez hotmail

à bientôt
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
7 nov. 2006 à 15:46
j'ai effectué une modif pour des frais de port.
je t'envoie cela où pour que tu vois. il y a surement des modifs à faire mais cela fonctionne
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
30 oct. 2006 à 14:10
Salut lapinou lol ...

le 09/05/2006 steph666 à fait une modif pour rectifier cette erreur

regarde les nouvelles sources

Par contre
Si quequ'un a deja mis en place les frais de port
serait il possible d'avoir un exemple des modifs

un truc genre 15 ? de port systematiquement
à chaque commande ....


Merci d'avance
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
27 oct. 2006 à 00:29
J'aurais besoin d'une petite aide. j'utilise cette source, et là j'essaie de faire en sorte de vider complètement le panier et de revenir à la boutique, ou alors de pouvoir revenir à la boutique quand le panier est vide, mais voici l'erreur que j'obtient

Fatal error: Call to a member function on a non-object in c:\logiciels\easyphp1-8\www\eclat&lumiere\panier\liste_article.php on line 194

si quelqu'un a déjà fait cette manip, je suis preneur d'infos.
bemawi Messages postés 8 Date d'inscription jeudi 9 mars 2006 Statut Membre Dernière intervention 19 mars 2006
4 oct. 2006 à 17:33
Perso, avec mon OS 8.5, OS 9.2, Linux et Win 98, j'ai pas de soucis avec les scripts java ( de 5% à 20 selon les enquéte d'ordinateur fonctionnant sans javascript surf sur le web).

En ce qui concerne ta solution, elle est nullement fonctionnel (ne me donnez pas de site géré avec ce code tel quel, sinon, je m'en vais passer des commandes), perso, j'ai ecrit un code qui n'as plus rien à voir avec celui là, pour le panier, je me base uniquement sur la quantité et la réference, puis je recalcule tout avant d'enregistrer la commande du client.

Faute de temps, je n'ai pas cherché à modifier celui là, mais je me legarde sous le coude, pour les froides nuit d'hivers.

Un peu de lecture sur le javaScript http://blog.alsacreations.com/2006/01/24/217-pourquoi-certains-nactivent-pas-javascript
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
3 oct. 2006 à 12:07
Bonjour !!!
Y'a que moi ici !!!

Quelqu'un pourrait mettre un exemple de mise en place des frais de port.

quel sont les modifs pour :
panier.class.php
et
consultation_panier.php

moi j'ai toujour un message.
missing argument ligne 57 de panier.class.php
à la ligne 57 il y a : function ajoutPort($port, $typeport) {....

je précise pour ceux qui en douterais encore
Je comprend pas pourquoi les class, je bloque
c'est maladif, mais rien à faire,
ma tête elle veux pas !!! ???

Merci à ceux qui voudrais bien m'aider
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
1 oct. 2006 à 13:58
Je me permet aussi d'intervenir concernant la pseudo faille

ma solution est celle ci :
[# &designation=<? echo $data['id_desig']; ?>&qte=1&prix=<? echo $pvht; ?>&origine=index.php?page=panier'">]

cela à le default de ne pas fonctionner chez les gens qui bloquent les javascripts
1 à 2 % des internautes ... ou chez les gens en Mac avec un vielle OS 9 (bien fait pour eux!! lol)
mais sinon c'est nickel

voilà , rien de plus
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
1 oct. 2006 à 13:48
Bonjour,
As2b, merci de t'être interressé a mon probleme,
toutefois, il y a une petite incomprehention
(j'ai du mal m'exprimer)
En france il y a plusieurs taux de TVA
19.6% classic .... mais si je souhaite vendre un livre la TVA passe à 5.5%
et le tout sur la même commande ....

le probleme est la ...
gérer 2 taux de TVA sur la même commande

pas facile...

pour le moment ma solution c'est de virer le detail TVA
mais c'est pas le mieux

merci à ceux qui y reflechirons

à bientôt
as2b Messages postés 1 Date d'inscription mercredi 11 juin 2003 Statut Membre Dernière intervention 27 septembre 2006
27 sept. 2006 à 01:03
Bonjour,
Et merci pour cette class.
Pour répondre à Merci51 et son problème de double TVA, moi pour ma part j'utilise 15 TVA différentes?
J'ai une table « pays », je récupère la TVA du pays dans la fonction panier, grâce à une $_SESSION qui a été renseigné quand la personne s'identifie.

function Panier($actif = false) {
$this->article = array();
$this->nbarticle = 0;
$this->totalHT = 0;
$this->totalTTC = 0;
$this->TVA = $_SESSION['CHAMP_TVA'];
$this->calculmontant = $actif;
$this->port = 0;
$this->typeport = 0;
$this->portTVA = 0;
$this->bonAchat = $_SESSION['BON_ACHAT'];
}
bemawi Messages postés 8 Date d'inscription jeudi 9 mars 2006 Statut Membre Dernière intervention 19 mars 2006
22 sept. 2006 à 15:06
FAILLE

Si un client souhaite commander votre produit à 100 euros, gratuitement, il PEUT.

Comment ? Via la barre d'url, car elle transmet toutes les informations :
ajout_panier.php?numserie=['id_art']&reference=['des_art']&qte=1&prix=['prix_art']&origine=liste_article.php?

si on modifie par la valeur voulu (exemple 0) le client passera commande pour O euro !!!.


J'ai pas mes cours de droit sous la main, mais le client pourra reclammer le produit à la somme donnée, soit 0 euro si il s'y prend correctement (motus sur la procédure à suivre).

Solution, ne transmettre que l'id du produit et la quantité voulu, puis restituer toutes les info (soit déjà présente sur la page, soit dans une base de donnée).

Cette faille à été signalée à l'auteur il y a 3-4 jours.
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
13 sept. 2006 à 09:53
Bonjour,
Alors la c'est la mouïse !!!

Il faut que je jère une double TVA.

5,5% pour la TVA
19,6% pour le reste

Je misère grave et sans resultat probant en plus.

et ne pas en mettre de frais de port au dela de 200 ? TTC d'achat.

Voila ou j'en suis ....
si quelqu'un à une idée ....

Merci d'avance
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
2 juil. 2006 à 19:11
Juste un petit passage pour lire les mise à jour et encore remercier steph666
bonne continuation a tous
phildart2000 Messages postés 1 Date d'inscription mardi 26 octobre 2004 Statut Membre Dernière intervention 6 juin 2006
6 juin 2006 à 01:46
Salut,

Merci pour ce script, mais... moi ça marche presque nickel :(

En effet, lorsque je suis dans la page liste_article.php et que je clique sur ajouter
au panier ça marche. Mais si je clique sur un autre ajouter au panier il m'affiche un message d erreur.

Mais l'article est bien rajouter au panier...


----------------Voici le messsage d'erreur----------------------


Notice: Undefined index: Reference4 in c:\program files\easyphp1-8\www\source\phpcs_source_29499\panier\panier.class.php on line 146

Notice: Undefined index: montantHT in c:\program files\easyphp1-8\www\source\phpcs_source_29499\panier\panier.class.php on line 198

Notice: Undefined index: montantTTC in c:\program files\easyphp1-8\www\source\phpcs_source_29499\panier\panier.class.php on line 199

Notice: Undefined variable: nom in c:\program files\easyphp1-8\www\source\phpcs_source_29499\panier\panier.class.php on line 158

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\source\phpcs_source_29499\panier\panier.class.php:146) in c:\program files\easyphp1-8\www\source\phpcs_source_29499\panier\ajout_panier.php on line 56

---------------------------------------------------
---------------------------------------------------


Est ce que tu pourrais donner plus d'info précise sur l'emplacement exacte de ce code?? Merciiiiiii

---------------------------------------------------
-> dans liste_article.php
-------------------------------------------------------------------------------------------
rajouter dans le lien d'insertion le code suivant =============> Ca se trouve ou exactement
&nom='.$r1["nom"].'
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
9 mai 2006 à 18:49
Petite modif,
pour éviter le bug lors du vidage du panier.

Stéph.
SAaD44 Messages postés 69 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 6 décembre 2007
7 mai 2006 à 03:27
Bonsoir et félicitation pour ce code.
Tout de fois je garde ma note en réserve car j'ai un problème (pour changer un peu ...).
Voila, je peux ajouter des articles dans le panier, je peux en supprimer, je peux en modifier la quantité, bref je peux tout faire mais... une seule fois!

C'est-à-dire que si je remplis, puis je vide le panier et enfin que je tente de le reremplir, j'obtiens une page blanche.
J'ai pu trouver où le code bloqué dans la page "ajout_article.php" grâce à des "echo".
C'est ici :
$var->calculmontant = true;
$var->ajouterArticle($numserie, $qte, $prix);


En espérant que l'on puisse me venir en aide, car ça va vraiment m'aider pour mon site si il y a un panier de dispo.

Bye
Spheerys Messages postés 1 Date d'inscription jeudi 13 avril 2006 Statut Membre Dernière intervention 14 avril 2006
14 avril 2006 à 13:58
==========================
au secours jai ce message la lorsque je supprime tou ce que jai dans le panier:
Fatal error: Call to undefined function: ajouterarticle() in c:\program files\easyphp1-8\www\telephone\ajout_panier.php on line 45
==========================

J'ai le même problème que toi corsonr, mais lorsque j'ajoute un article au panier... je n'arrive décidément pas à m'en dépatouiller :(
cacim7 Messages postés 10 Date d'inscription mardi 24 janvier 2006 Statut Membre Dernière intervention 13 avril 2006
13 avril 2006 à 16:30
salu CORSONR jai une question;

comment tu fait pour récupérer le total et le mettre dans une table mysql?merci
corsonr Messages postés 8 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 1 décembre 2006
13 avril 2006 à 10:55
Hello, le script fonctionne tres bien en local mais sur mon hébergeur j'ai au moment de recalculer le prix global ce message d'erreur:

Parse error: parse error, unexpected T_VARIABLE in /var/www/vhosts/backup/reseler12/www.monsite.com/htdocs/cgi-bin/php-cgi on line 3646

étonnant non ? quelqu'un aurait-il eu ce pb ? je pense que cela vient soit de serialize() soit de $_REQUEST
merci de me donner un coup de main si connaissez la solution !
cacim7 Messages postés 10 Date d'inscription mardi 24 janvier 2006 Statut Membre Dernière intervention 13 avril 2006
10 avril 2006 à 14:27
au secours jai ce message la lorsque je supprime tou ce que jai dans le panier:
Fatal error: Call to undefined function: ajouterarticle() in c:\program files\easyphp1-8\www\telephone\ajout_panier.php on line 45
corsonr Messages postés 8 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 1 décembre 2006
5 avril 2006 à 14:36
hello, bon alors j'ai trouvé la solution: INFO pour ceux qui veulent d'autres parametres dans le panier:

Pour ajouter le nom du produit:

-> dans panier.class.php
-------------------------------------------------------------------------------------------

modifier la fonction suivante:
// Ajoute un article dans le Panier
function ajouterArticle($numserie, $quantite, $montantHT = 0, $nom) {
if (!empty($numserie)) {
if ($this->article[$numserie]) $this->article[$numserie]['qte'] += $quantite;
else {
$this->article[$numserie]['qte'] = $quantite;
$this->nbarticle++;
}
if (isset($this->calculmontant) && $this->calculmontant == true) {
$this->article[$numserie]['prix'] = $montantHT;
$this->CalculMontantArticle($numserie, $this->article[$numserie]['prix'], $quantite);
$this->CalculTotal($this->article[$numserie]['montantHT']);
}
}
$this->article[$numserie]['nom'] = $nom; // CODE A RAJOUTER
}

et créer la fonction d'appel du nom:
// Renvoie le nom de l'article $numserie
function getNomArticle($numserie) {
return ($this->article[$numserie]['nom']);
}

-> dans ajout_panier.php
-------------------------------------------------------------------------------------------

rajouter dans l'affectation des variables la ligne:
$nom = isset($_REQUEST["nom"]) ? $_REQUEST["nom"] : "";

et rajouter la variable $nom lors de l'appel de la fonction dans le programme principal

if (!Empty($numserie) && $qte > 0) {
if ($prix > 0) {
$var->calculmontant = true;
$var->ajouterArticle($numserie, $qte, $prix, $nom); // LA VARIABLE EST RAJOUTEE ICI
} else $var->ajouterArticle($numserie, $qte);

$_SESSION["panier"] = serialize($var);
}
if ($origine) {
Header("Location: $origine");
exit;
}

-> dans liste_article.php
-------------------------------------------------------------------------------------------
rajouter dans le lien d'insertion le code suivant
&nom='.$r1["nom"].'

et voila !
corsonr Messages postés 8 Date d'inscription mercredi 29 mars 2006 Statut Membre Dernière intervention 1 décembre 2006
5 avril 2006 à 12:52
hello, je trouve code tres bien et bravo a l'auteur. J'ai une petite question: lorsque l'on ajoute un produit dans la panier (consultation_panier.php) seule la référence du produit est listée, et je souhaiterais récupérer le nom exact du produit sélectionné (depuis ma base)... je passe donc la variable dans le lien article[$numserie]['nom']);
}

et dans consultation_panier.php pour afficher la valeur je mets:
'.$page->panier->getNomArticle($numserie).' dans la variable $out...

et bien entendu ca ne fonctionne pas....

quelqu'un saurait-il me donner un coup de pouce pour en fait passer une variable (nom) supplémentaire dans le lien ajouter pour la récupérer et l'afficher dans le panier ?

merci par avance
peterklm Messages postés 15 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 5 décembre 2005
21 mars 2006 à 15:21
slt,
oui, je comprends un peu mieux maintenat, mais je suis entrain de mettre en fonction cette class panier, sans pour autant utiliseer la fonction serialize(), et ma foie ça marche nickel en local pour l'instant.
dois je avoir recours à la serialisation ou je laisse comme ça. quel est l'enjeu de mon code.

merci
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
21 mars 2006 à 13:26
Juste comme ca :)

Toutes données envoyées en session est automatiquement serialisé/déserialisé via le moteur interne de PHP.
Utiliser serialize() et unserialize() pour des variables en session ne sert que pour être vraiment sur.

La sérialization permet de transformer une tableau ou un objet ou n'importe quoi en une chaine exploitable et qui puisse être passé en paramètre d'URL ou autre facilement.
peterklm Messages postés 15 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 5 décembre 2005
21 mars 2006 à 10:09
Salut,
l'exemple donné plus haut suscite bien mmon attention, On m'a tjrs dit qu'il faut serializer la session pour rendre le code soit plus leger ou plus efficace...(je ne sais pas trop à quoi ça sert la serialization). De plus dans l'exemple ci dessus je vois que le programmeur a serializé la session panier et à aucun moment il n'a utilisé la fonction unserialize qui marche en parallele à serialisz.

Mon appel ici est pour savoir à quoi ça sert exactement la serialization.
Quand faut il le faire.

merci pour une reponse.
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
21 mars 2006 à 09:19
j'ai eu ce soucis également. Et je ne sais pas pourquoi. Mais d'après un admin de chez mon hébergeur, cela dépend de la position de ta ligne session_start(), c'est bidon, mais toutes mes 'session_start()' je les ai mis en première ligne de code, et après plus de soucis. Je sais c'est bidon, mais cela a régler mon problème.
cs_ginyy Messages postés 2 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 21 mars 2006
21 mars 2006 à 02:33
C'est encore me ;)

J'ai essayé de vider le cache et c'est bon c'est reparti...
Maintenant j'ai un autre problème. C'est quand je veux transformer mon panier 'user' en panier 'membres'. Je fais une page consultation2_panier ou j'insere ma session utilisateur. Et la je me retrouve avec:
Fatal error: Call to undefined function: affichages() in /homepages/43/d146767742/htdocs/indeco/web/Pages_Front/Panier/consultation2_panier.php on line 50

Le code:
if ($page->maj) maj($page);

$contenu .= Affichages($page);

Le debut de mon fichier:
session_start();

if (isset($_SESSION['logged']) && $_SESSION['logged'] == true)
{
echo 'Bonjour'.$_SESSION['nom_particulier'].', [ [../Particuliers/deconnexion.php Se déconnecter] ]
';
....
Fin du prog
}
else{echo 'vous devez etre connecté..';
}

J'ai l'impression qu'il aime pas les doubles sessions. D'ailleurs peut-on utiliser une même session_start() pour le panier et les membres?

Merci de votre aide :)
cs_ginyy Messages postés 2 Date d'inscription vendredi 17 mars 2006 Statut Membre Dernière intervention 21 mars 2006
21 mars 2006 à 00:48
Bonjour,

Merci pour le prog vraiment super bien fait. Cela dit, je rencontre certain bug sur le fichier liste_article:

Fatal error: Call to a member function on a non-object in /homepages/43/d146767742/htdocs/indeco/web/Pages_Front/Panier/liste_article.php on line 83

Voici la partie concernée:
if (isset($_SESSION['panier'])) {
$page->panier = unserialize($_SESSION['panier']);

if ($page->panier->getNombreArticle() > 0) {
$out .= '


<center>[consultation_panier.php Voir mon Panier]</center>';
}
}

J'espère que vous pourrez m'aider à debugger ça. Merci.
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
9 mars 2006 à 00:20
j'ai vu que sous IE cela disparait, et je ne sais pas pourquoi. aucune idée là dessus?? pour l'instant je fais tout sur firefox, je verrais ensuite.
Pour le multilang pas encore réfléchis, je me suis déjà bien cassé la tête avec ce que j'ai fais. Mais j'ai le temps là alors je me penche pour le moment pour la réalisation complète de la commande.
Bye
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
9 mars 2006 à 00:08
Merci beaucoup

j'y etais presque...

Mais je prend note

par contre j'ai visité ton site et j'ai un bug sur le menu

"On Mouse Out" les rubriques disapaissent et le cadre centrale deviens blanc.

teste sous IE

Voila sinon c'est bien

Par contre comment tu vas faire le multilang

moi je fais deja en français anglais et c'est pas simple
prenant en compte ? et $
les tarifs en $ sont HT

ce qui entraine des mmigraines ....

Merci encore
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
8 mars 2006 à 23:41
La marche à suivre et simple. Lorsque tu cliques sur le lien pour ajouter un article, il y a des variables que tu envoie, au fichier ajout_article.php, hé bien là dessus tu dois ajouter une nouvelle variable :
voici comment je fais :
- Fichier liste_article (lien pour ajouter) : ajut de la variable $reference
###########################################################################################
[ajout_panier.php?numserie='.$row['id_art'].'&reference='.$row['des_art'].'&qte=1&prix='.$row['prix_art'].'&origine=liste_article.php? ][# ]
###########################################################################################

- fichier ajout_article :
###########################################################################################
/*************************************************************************************************
** affectations variables **
*************************************************************************************************/
$numserie = isset($_REQUEST["numserie"]) ? $_REQUEST["numserie"] : "";
$ref = isset($_REQUEST["reference"])? $_REQUEST["reference"]: "";
$qte = isset($_REQUEST["qte"]) ? $_REQUEST["qte"] : 0;
$origine = isset($_REQUEST["origine"]) ? $_REQUEST["origine"] : "";
$prix = isset($_REQUEST["prix"]) ? $_REQUEST["prix"] : 0;


/*************************************************************************************************
** programme principal **
*************************************************************************************************/

if (!Empty($numserie) && $qte > 0) {
if ($prix > 0) {
$var->calculmontant = true;
$var->ajouterArticle($numserie, $ref, $qte, $prix);
} else $var->ajouterArticle($numserie, $qte);

$_SESSION["panier"] = serialize($var);
}
###########################################################################################

-fichier class_panier
###########################################################################################
// Ajoute un article dans le Panier
function ajouterArticle($numserie, $ref, $quantite, $montantHT = 0) {
if (!empty($numserie)) {
if ($this->article[$numserie])
{
$this->article[$numserie]['qte'] += $quantite;
$this->article[$numserie]['reference'] = $ref;
}
else
{
$this->article[$numserie]['qte'] = $quantite;
$this->article[$numserie]['reference'] = $ref;
$this->nbarticle++;
}
if (isset($this->calculmontant) && $this->calculmontant == true) {
$this->article[$numserie]['prix'] = $montantHT;
$this->CalculMontantArticle($numserie, $this->article[$numserie]['prix'], $quantite);
$this->CalculTotal(($this->article[$numserie]['prix']*$quantite));
}
}
}

// Renvoie la référence de l'article $numserie (fonction à créer, enfin c une méthode)
function getRefArticle($numserie) {
if (isset($this->article[$numserie]['reference'])) return ($this->article[$numserie]['reference']);
else return 'inconnu';
}
###########################################################################################

- fichier consultation_panier :
###########################################################################################
//pour l'affichage de la référence
<td align="left">'.$page->panier->getRefArticle($numserie).'</td>
###########################################################################################

voilà, j'espère que cela peut t'aider.
tu peux voir ce que cela donne sur www.carbo-cleaner.com, le site est encore en travaux, alors pardonne les éventuelles erreurs.
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
8 mars 2006 à 21:12
RE ... lelapinou_69, je me permet une question ...

J'ai lu (plus haut) que tu passais les designation de l'article au panier ; j'y songe aussi pour eviter un autre appel a la base et je me demandais si il fallait faire des changements à : panier.class.php, en faite je rame sur les class...

je tatonne.

tu pourrais me mettre sur une piste, merci
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
8 mars 2006 à 20:59
Merci

C'est de ce code dont tu parles ?
(page consultation_panier.php)

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

Si oui ... tu pourrais etre plus clair

faire un Header("Location:liste_article.php."); ??

Merci
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
8 mars 2006 à 17:44
pour résoudre ton dernier POST. il y a un bout de code qui test si tu as des articles dans le panier. Trouve ce bout de code, et insère dessus un lien hypertext sur la page liste_article.php. Je bosse avec le même script, et j'ai rencontré quelques soucis semblables. Mis celui ci n'est pas grand chose.
Sinon vérifie bien le paramètrage de ton fichier php.ini qui se trouve dans Easyphp\Apache, car j'utilise aussi Easyphp et je n'ai eu aucun soucis en local.
Mets bien ta variable de déclaration des globales à 'On' et change le paramètrage de l'affichage de tes erreurs, car en local, tu as généralement des warnings, que tu n'as pas sur les servers webs.
Voilà, en espèrant avoir contribué.
Merci au créateur du script, ça nous aide beaucoup pour se lancer.
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
8 mars 2006 à 14:38
suite... ;)
Je me fais les questions et les reponses

c'est encore sous easyphp1-8 qu'il y a des erreurs

Mais sur mon serveur , CA MARCHE !!!!

par contre quand on supprime tout les articles du panier
LA c'est le drame

concretement la page "ajout_panier.php" reste blanche

et il ne se passe plus rien ...

Si je suis penible il faut le dire :)

à bientôt

je cherche encore .... mais moi et les class c'est du sport
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
8 mars 2006 à 11:20
Bonjour c'est encore moi ...

Aprés quelques tentatives je bloque maintenant sur un nouveau probleme.

J'ai connecter la page liste article sur une base , ça marche

mais en faite quand je clic sur avouter un article

j'ai un affreux message :"
Fatal error: Call to undefined function: ajouterarticle() in c:\easyphp1-8\www\xxxxx\teamwear\ajout_panier.php on line 45
"

J'ai pas touché la page "ajout_panier.php" ce qui me rend du coup des plus perplexe??..!!!!

Alors la je planche je galere je rale je cherche et maintenant j'appel "A L'AIDE"

Si quelqu'un à une idée....
Merci
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
27 févr. 2006 à 21:51
Le probleme viens du faite, et je ne suis pas le seul je crois, c'est que je fesait tourner le script en local sous easyphp 1-8 .

pour le remplacement de la ligne 146 , ta solution fonctionne (en local) , car sur un serveur j'ai aucune erreur , le script tourne TRES BIEN !!!!

En local , je suis aussi tombé sur la même erreur que "l0eil":
"-> Fatal error: Call to a member function on a non-object in c:\program files\programmation\easyphp1-8\easyphp1-8\www\panier\liste_article.php on line 126 "


Voilà ....
Merci à toi, j'essayerais de faire bon usage de ton script.
mais il me reste encore bien du travail sur les class ...
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
27 févr. 2006 à 15:30
Bonjour,

Je pense qu'il faut rajouter un 'isset' sur l'existence de la variable à la ligne 146, pour qu'il n'y ait plus d'erreur. Je mettrais ça à jour le plus rapidement possible dès que j'en aurais l'occasion.

En attendant, essaye de remplacer à la ligne 146 :

ça :
if ($this->article[$numserie]) $this->article[$numserie]['qte'] += $quantite;

par ça :
if (isset($this->article[$numserie])) $this->article[$numserie]['qte'] += $quantite;

et dis moi si c bon.

Stéph.
merci51 Messages postés 36 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 17 novembre 2009
27 févr. 2006 à 11:36
bonjour et merci et bravo

je suis débutant depuis longtemps en php et une class caddie clair c'est bien !!!

Mais j'ai juste mis l'exemple en local

la page 'liste_article.php' s'affiche parfaitement

et quand j'ajoute un article , HOP:

Notice: Undefined index: Reference2 in c:\easyphp1-8\www\panier\panier.class.php on line 146

Notice: Undefined index: montantHT in c:\easyphp1-8\www\panier\panier.class.php on line 191

Notice: Undefined index: montantTTC in c:\easyphp1-8\www\panier\panier.class.php on line 192

Warning: Cannot modify header information - headers already sent by (output started at c:\easyphp1-8\www\panier\panier.class.php:146) in c:\easyphp1-8\www\panier\ajout_panier.php on line 51


alors j'ai un peu honte mais ....
pourquoi?

Merci
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
23 févr. 2006 à 14:13
Merci à tous ceux qui ont bien rit avec mon message. Je ris encore. je disais bien qu'à force d'acharbement, je ne voyais pas l'évidence, et c'est ce qui se passait. il se trouve que la chaine de caractère dans $row['des_art'] était tout simplement celle ci : Ecran TFT 15" YAMADA. voilà, je vous laisse rire, et ce sera normal (pour les autres qui ne voient pas ce que c'est, et il va y en avoir des comme moi) c'est la double-cote, argh argh.
Merci à tous, et à bientot pour d'autre aventures.
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
23 févr. 2006 à 13:44
Hello steph. voilà j'avais écris plus haut que "parfois cela marchait et que parfois cela ne marchait pas". il se trouve que j'essaie d'inclure une donnée dans le tablea 'ARTICLE', c'est la désignation. Alors vous allez certainement me prendre pour un gros nul, mais ce n'est pas grave, je profite du forum pour poser ma question; donc quand j'ajoute la désignation, que j'appelle '$ref' mon lien ajout du panier est ainsi : ajout_panier.php?numserie='.$row['id_art'].'&ref='.$row['des_art'].'&qte=1&prix='.$row['prix_art'].'&origine....;
à savoir que dans $row['des_art'] il y a une chaine de caractère, avec des espaces, cela semble poser poblème sur mon lien, il ne s'éxécute pas, et du coup lorsque je clique, cela revient sur une page blanche.
La je bute sérieusement. C'est possible que je me sois tellement acharné que je ne vois pas l'évidence, mais, j'ai besoin d'un coup de main.
Merci beaucoup.
Merci aussi pour le script.

Je tiens à préciser que c pour ma formation personnelle que je fais ça et non pour un client. Je le dis car ça sèche sec sur le forum des fois.
Cordialement.
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
23 févr. 2006 à 09:25
Salut et merci,

Dans le cas que tu précises il aurait d'ailleurs fallu mettre $_GET étant donnée que les variables sont récupérées d'un lien.

Stéph
stouph24 Messages postés 1 Date d'inscription mercredi 22 février 2006 Statut Membre Dernière intervention 23 février 2006
23 févr. 2006 à 01:34
salut et félicitations pour ces sources.
formé à java le commence l'objet en php
j'attaque un site de vente en ligne en relation avec une base mysql et un paiement final par paypal.
j'espere profiter de vos lumieres et vous faire partager mon code :
création d'une classe article, génération dynamique des objets articles etc...

une première question : pourquoi dans ajout_panier.php tu récupères les les variables $numserie etc... dans $_REQUEST[] plutôt que dans $_POST[] ?

stouph
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
15 févr. 2006 à 13:11
Salut,
Hésitez pas à poster les bugs trouvés, ça servira à tout le monde.
Quant au ça marche et ça marche pas, j'aimerais plus d'explications, parce que là tu m'inquiètes ^^.

L'exemple d'utilisation de la classe filé avec, est très sommaire par rapport à l'utilisation de la classe elle même. Il ne faut pas le prendre tel quel et le réutiliser, il est juste là pour illustrer l'utilisation partielle de la classe. C'était pour répondre à une attente de certaines personnes, et non pour reproduire un système de gestion de panier complet.

La classe en elle-même me semble assez complète pour permettre un système de gestion plus poussé.
Normalement ça pose aucun problème pour ce qui est de l'insertion, je m'en sers et je n'ai pas eu de soucis particulier.

Stéph.
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
14 févr. 2006 à 12:54
Mille merci, mais je débugg ligne par ligne, et je trouve petit à petit d'où vient mon soucis. Par contre c'est pas une mince affaire que de l'intégrer à la gestion d'une BDD. un coup ça marche, un coup ça marche plus, argh, je m'arrache le peu de cheveux qu'il me reste...
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
14 févr. 2006 à 10:01
Bonjour,

Pour y voir un peu plus clair, si vous pouviez mettre un bout de code ou détailler un peu plus vos problèmes, je pourrais y jeter un coup d'oeil à l'occasion.

Stéph.
lelapinou_69 Messages postés 64 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 10 novembre 2008
13 févr. 2006 à 18:29
Hello NeOtEcK. J'essaie moi aussi de mettre ce script en liaison avec une BDD Mysql. Mais par contre, lorsque j'introduit le code de connexion, la page générée par php est vide. Il n'y a meme pas de source quand je fais l'affichage des sources via le browser.
Aurais tu une idée.
NeOtEcK Messages postés 7 Date d'inscription vendredi 22 novembre 2002 Statut Membre Dernière intervention 13 janvier 2006
13 janv. 2006 à 11:39
petite question, je tente depuis 2 jours d'adapter ce code à ma base mysql

en effet j'ai une table 'produit', et j'aimerais pouvoir enregistrer mon panier dans une table CA (chiffre d'affaire) mais le seul probleme c'est que lors de l'enregistrement il faudrait que chaque produit soit enregistré séparément, quelqu'un pourrait-il m'aider ?

Merci d'avance
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
9 janv. 2006 à 00:36
print_r() et serialize() sont deux fonctions différentes :)
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
8 janv. 2006 à 22:08
Salut,
Je n'ai pas la version 1.8 d'easyPhp, je vais bientôt l'installer ^^.
Je crois que cette version utilise php5, et la classe en question ne doit pas être adaptée pour.
Quand j'aurais le temps, où si quelqu'un en a le courage, je l'adapterais.

Stéph.
lOeil Messages postés 23 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 25 mars 2009
8 janv. 2006 à 18:48
Merci pour ce code.
Cependant j'obtient une erreur des que j'ouvre liste_article.php
-> Fatal error: Call to a member function on a non-object in c:\program files\programmation\easyphp1-8\easyphp1-8\www\panier\liste_article.php on line 126

Quelqu'un pourrait m'aider s'il vous plait ? =)
cs_TrasherDemon Messages postés 5 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 25 novembre 2005
25 nov. 2005 à 17:50
Je comprends (our je pense comprendre) ce que tu dis FHX...

Néanmoins, lorsque j'utilise la classe exemple telle quelle, la valeur enregistrée pour l'objet panier n'est pas du type a:1{s:9:NULL}. Lorsque je fait un print_r($_SESSION), j'obtiens [panier] => N;
Je n'arrive pas à comprendre ce qu'est ce N
Merci beaucoup pour tes explication en tous cas :)
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
25 nov. 2005 à 16:13
Voui, mais tu as faux :)
Un attribut de classe peut être déclaré de type null et etre ensuite sérialisé.

$this->panier = null;
A la sérialisation, tu obtiens une chaine type :
a:1{s:9:NULL}.
a:1 représentant l'objet en cours.
s:9 représentant $this->panier. (peut être une autre pair de lettre/chiffre)
NULL sa valeur :)

Et ca marche pourtant très bien, vu que je l'utilise moi même.
Attention, un objet n'a pas de valeur propre !!! Ce sont ses attributs de classes qui le peuvent !

Lorsque tu unserialises la chaine pour la reconvertir en objet, ca marche très bien. Encore faut-il ne pas avoir oublier d'avoir inclu le fichier de classe au risque de se retrouver avec une classe de type stdClass. Autrement dit une classe vide :o
cs_TrasherDemon Messages postés 5 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 25 novembre 2005
25 nov. 2005 à 14:50
Je me suis effectivement mal exprimé :-)
C'est la valeur de l'objet qui vaut null

Dans le cas où le nombre d'articles est <=0 ; le code suivant est exécuté $page->panier = null; (d'où "l'objet null"...), cet objet est ensuité sérialisé... Lors de l'appel à unserialize, ce n'est pas un objet correct qui ressort de tout ca.

J'espère m'être mieux exprimé cette fois...
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
25 nov. 2005 à 14:29
"php semble ne pas aimer la sérialisation d'objets null (cas getNombreArticle() <= 0)" Un objet null ? Ca veut dire quelque chose ca ?! lol

Une variable est soit de type objet, soit de type null. Certainement pas les 2 en même temps :) C'est comme si je te disais qu'une chaine est de type double.
cs_TrasherDemon Messages postés 5 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 25 novembre 2005
25 nov. 2005 à 11:07
Salut,

Efficace ce code rien à redire ;-)

Deux petites remarques néanmoins, concernant les fichiers exemples :
1) php semble ne pas aimer la sérialisation d'objets null (cas getNombreArticle() <= 0)
dans le fichier consultation_panier.php, j'ai remplacé
$_SESSION["panier"] = serialize($page->panier);
par
if(isset($_SESSION['panier'])) $_SESSION["panier"] = serialize($page->panier);
et j'ai ajouté
unset($_SESSION["panier"]);
dans la condition if ($page->panier->getNombreArticle() <= 0)
2) selon la doc de php, il n'est pas recommandé d'utiliser session_register avec $_SESSSION (cf http://fr2.php.net/manual/fr/function.session-register.php).

Le premier point peut causer un bug (dans mon cas l'impossibilité d'ajouter un article au panier après avoir vidé ce dernier), la seconde ne pose visiblement pas de problème majeur.

Bon travail Steph666 :-)
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
18 nov. 2005 à 10:09
Ok J'en prends note, je change ça dès que possible.

Stéph.
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
17 nov. 2005 à 18:25
$_SESSION['panier'] = new Panier();

Ah ?!
J'imagine pas la tête du serveur quand il doit faire mumuse avec la session avec un objet à l'intérieur :)

Nonon, c'est pas du tout comme ca qu'il faut faire !

<?php // Pour créer un panier et l'enregistrer en session
$var = new Panier();
// Prog
$_SESSION['panier'] = serialize($var);
?>
<?php // Pour récupérer un panier existant en session
if ( isset($_SESSION['panier']) ) {
$var = unserialize($_SESSION['panier']);
}
?>
<?php //Pour coupler les deux !
$var = ( isset($_SESSION['panier']) ) ? unserialize($_SESSION['panier'] : new Panier;

// Programme
$_SESSION['panier'] = serialize($var);
?>
On ne fait jamais traverser un objet en session comme ca :)
objectifweb Messages postés 25 Date d'inscription mardi 22 décembre 2009 Statut Membre Dernière intervention 6 janvier 2010
16 nov. 2005 à 18:15
Merci steph666, je vais jeter un oeil mais cela me semble beaucoup plus clair ;)
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
16 nov. 2005 à 17:08
Je viens de rajouter un exemple assez basique permettant d'utiliser la classe.
J'espère que ce sera compréhensif.
Sinon n'hésitez pas à poser des questions et/ou poster des commentaires ^^.

Stéph.
objectifweb Messages postés 25 Date d'inscription mardi 22 décembre 2009 Statut Membre Dernière intervention 6 janvier 2010
15 nov. 2005 à 13:39
Bonjour Steph666
Sans avoir l'habitude de travailler avec des classes (mea culpa) et cela aidera certainement d'autres qui n'osent pas abuser, tu as quelques lignes de codes permettant de relire le pannier en affichant le numéro de série et la quantité, on arrivera bien selon cela à afficher le prix etc...?

En te remerciant de ta patience envers des ignares ;)
Patrick
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
9 oct. 2005 à 15:57
Salut tu peux faire une boucle foreach ($tableau as $cle => $valeur) {}
avec $cle étant l'index et $valeur sa valeur.
cs_khemi Messages postés 14 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 7 mai 2007
8 oct. 2005 à 20:13
Bonjour, j'aurais une question. Tu fais comment pour afficher ce qui se trouve dans le panier?
Je m'explique tu as mis 3 article dans le panier et tu voudrais tous les afficher ?
J'ai vu que tu peux sortir les données en fonction de leur numéro de série mais si tu ne le connais pas, tu fais comment ?

Sinon très bien fait cette classe ! Merci de l'avoir publié
landrer Messages postés 1 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 septembre 2005
16 sept. 2005 à 11:23
Salut,

Moi j'ai regarder ce code et je trouve que c'est tres clair , tres simple,
c'est assez bien gerer je trouve dans l'ensemble.
Sauf Que... le calcul du montant renvoie des resultat incohérents du à une
erreur de logique d'incrémentation .
// Calcule le montant Total HT et TTC du panier
function CalculTotal($prix) {
$this->totalHT += $prix;
$this->totalTTC += $prix * (1 + ($this->TVA / 100));
}
il faut modifier l'appel de la fonction CalculTotal() dans la fonction ajouterarticle() comme ceci

// Ajoute un article dans le Panier
function ajouterArticle($numserie, $quantite, $montantHT = 0) {
if (!empty($numserie)) {
if ($this->article[$numserie]) $this->article[$numserie]['qte'] += $quantite;
else {
$this->article[$numserie]['qte'] = $quantite;
$this->nbarticle++;
}
if (isset($this->calculmontant) && $this->calculmontant == true) {
$this->article[$numserie]['prix'] = $montantHT;
$this->CalculMontantArticle($numserie, $this->article[$numserie]['prix'], $quantite);
$this->CalculTotal(($this->article[$numserie]['prix']*$quantite));
}
}
}
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
26 juil. 2005 à 10:03
Salut,

Partout où tu utilises la classe que ce soit session ou non, il faut faire un include de la classe, il semble peut-être que ce soit une référence à un objet non défini.
Mais si tu postais un bout de code se serait plus simple à voir que sorti de son contexte.
peterklm Messages postés 15 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 5 décembre 2005
26 juil. 2005 à 00:46
Salut,
je trouve tes fonctions sont très bien faites, mais malheureusement tu developpes pas suffisamment le concept d'utilisation pour les débutant et et meme pour un bon amateur confirmé . Moi perso j'appreci ta façon de synthétiser tout ça , mais ça fait une semaine entière que je galère la dessus, je n'arrive meme pas à afficher quelque chose. j'ai plutôt des erreurs que du resultat genre :
Warning: 'unserialize_callback_func' defined (1) but not found in d:\easyphp\www\gestion_achat\achat.php on line 2.
une explication de plus serait bienvenue, suivant ton emploi du temps bien sûr.
Steph666 Messages postés 74 Date d'inscription jeudi 6 mars 2003 Statut Membre Dernière intervention 5 juin 2008
31 mai 2005 à 15:21
Tu fais une page qui ne gère que la gestion des ajouts modifs suppression des articles et éventuellement le calcul des prix et frais de port en activant calculmontant, puis redirection vers la page appelante.
Ex de page 'jout_panier.php' :

include_once 'panier.class.php';

session_start();

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


$numserie = isset($_REQUEST["numserie"]) ? $_REQUEST["numserie"] : "";
$qte = isset($_REQUEST["qte"]) ? $_REQUEST["qte"] : 0;
$origine = isset($_REQUEST["origine"]) ? $_REQUEST["origine"] : "";
$prix = isset($_REQUEST["prix"]) ? $_REQUEST["prix"] : 0;

if (!Empty($numserie) && $qte > 0) {
if ($prix > 0) {
$_SESSION['panier']->calculmontant = true;
$_SESSION['panier']->ajouterArticle($numserie, $qte, $prix);
} else $_SESSION['panier']->ajouterArticle($numserie, $qte);
if ($origine) {
Header("Location: $origine&ajout=oui");
exit;
}
}

Et lors de l'appel tu fais :
ajout_panier.php?numserie=$numserie&qte=$qte&prix=$prix&origine=$origine

Ceci n'est qu'un exemple.
cs_harlock59 Messages postés 10 Date d'inscription lundi 12 mai 2003 Statut Membre Dernière intervention 17 avril 2009 1
30 mai 2005 à 09:50
j'imagine que dans la page ou sont les articles il faut mettre un include (panier.class.php), mais que doit on mettre sur le lien "ajouter au panier" d'un article?
fg85 Messages postés 370 Date d'inscription dimanche 28 mars 2004 Statut Membre Dernière intervention 13 avril 2007
14 févr. 2005 à 23:20
ça a l 'air de se tenir ...

--------------------------------
http://fg.logiciel.free.fr
Rejoignez-nous