CLASS PANIER CADDIE

Messages postés
370
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
13 avril 2007
- - Dernière réponse :  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.

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

Afficher la suite 
fg85
Messages postés
370
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
13 avril 2007
-
ça a l 'air de se tenir ...

--------------------------------
http://fg.logiciel.free.fr
cs_harlock59
Messages postés
10
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
17 avril 2009
-
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?
Steph666
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
5 juin 2008
-
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.
peterklm
Messages postés
15
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
5 décembre 2005
-
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
-
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.
landrer
Messages postés
1
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 septembre 2005
-
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));
}
}
}
cs_khemi
Messages postés
15
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
7 mai 2007
-
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é
Steph666
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
5 juin 2008
-
Salut tu peux faire une boucle foreach ($tableau as $cle => $valeur) {}
avec $cle étant l'index et $valeur sa valeur.
objectifweb
Messages postés
25
Date d'inscription
mardi 22 décembre 2009
Statut
Membre
Dernière intervention
6 janvier 2010
-
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
-
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
-
Merci steph666, je vais jeter un oeil mais cela me semble beaucoup plus clair ;)
FhX
Messages postés
2368
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3 -
$_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 :)
Steph666
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
5 juin 2008
-
Ok J'en prends note, je change ça dès que possible.

Stéph.
cs_TrasherDemon
Messages postés
5
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
25 novembre 2005
-
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 :-)
FhX
Messages postés
2368
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3 -
"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
-
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
2368
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3 -
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
-
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 :)
lOeil
Messages postés
23
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
25 mars 2009
-
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 ? =)
Steph666
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
5 juin 2008
-
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.
FhX
Messages postés
2368
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3 -
print_r() et serialize() sont deux fonctions différentes :)
NeOtEcK
Messages postés
7
Date d'inscription
vendredi 22 novembre 2002
Statut
Membre
Dernière intervention
13 janvier 2006
-
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
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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.
Steph666
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
5 juin 2008
-
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
-
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
-
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.
stouph24
Messages postés
1
Date d'inscription
mercredi 22 février 2006
Statut
Membre
Dernière intervention
23 février 2006
-
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
-
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
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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.
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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.
merci51
Messages postés
36
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2009
-
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
Steph666
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
5 juin 2008
-
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
-
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 ...
merci51
Messages postés
36
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2009
-
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
-
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
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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
-
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
merci51
Messages postés
36
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2009
-
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
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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
-
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
-
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
cs_ginyy
Messages postés
2
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
21 mars 2006
-
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.
cs_ginyy
Messages postés
2
Date d'inscription
vendredi 17 mars 2006
Statut
Membre
Dernière intervention
21 mars 2006
-
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 :)
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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.
peterklm
Messages postés
15
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
5 décembre 2005
-
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.
FhX
Messages postés
2368
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3 -
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
-
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
corsonr
Messages postés
8
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
1 décembre 2006
-
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
corsonr
Messages postés
8
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
1 décembre 2006
-
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 !
cacim7
Messages postés
10
Date d'inscription
mardi 24 janvier 2006
Statut
Membre
Dernière intervention
13 avril 2006
-
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
-
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
-
salu CORSONR jai une question;

comment tu fait pour récupérer le total et le mettre dans une table mysql?merci
Spheerys
Messages postés
1
Date d'inscription
jeudi 13 avril 2006
Statut
Membre
Dernière intervention
14 avril 2006
-
==========================
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 :(
SAaD44
Messages postés
69
Date d'inscription
mercredi 18 février 2004
Statut
Membre
Dernière intervention
6 décembre 2007
-
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
Steph666
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
5 juin 2008
-
Petite modif,
pour éviter le bug lors du vidage du panier.

Stéph.
phildart2000
Messages postés
1
Date d'inscription
mardi 26 octobre 2004
Statut
Membre
Dernière intervention
6 juin 2006
-
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"].'
merci51
Messages postés
36
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2009
-
Juste un petit passage pour lire les mise à jour et encore remercier steph666
bonne continuation a tous
merci51
Messages postés
36
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2009
-
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
bemawi
Messages postés
8
Date d'inscription
jeudi 9 mars 2006
Statut
Membre
Dernière intervention
19 mars 2006
-
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.
as2b
Messages postés
1
Date d'inscription
mercredi 11 juin 2003
Statut
Membre
Dernière intervention
27 septembre 2006
-
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'];
}
merci51
Messages postés
36
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2009
-
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
merci51
Messages postés
36
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2009
-
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
-
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
bemawi
Messages postés
8
Date d'inscription
jeudi 9 mars 2006
Statut
Membre
Dernière intervention
19 mars 2006
-
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
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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.
merci51
Messages postés
36
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2009
-
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
-
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
-
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
-
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
-
MP ...
cs_babar76
Messages postés
9
Date d'inscription
vendredi 29 août 2003
Statut
Membre
Dernière intervention
30 novembre 2006
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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.
cs_babar76
Messages postés
9
Date d'inscription
vendredi 29 août 2003
Statut
Membre
Dernière intervention
30 novembre 2006
-
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?
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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
-
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
-
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!
merci51
Messages postés
36
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2009
-
Steph666 << SUPER STAR >>

Merci et encore MARCI !!!!!!
corsonr
Messages postés
8
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
1 décembre 2006
-
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
-
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
-
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 !
corsonr
Messages postés
8
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
1 décembre 2006
-
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
cs_babar76
Messages postés
9
Date d'inscription
vendredi 29 août 2003
Statut
Membre
Dernière intervention
30 novembre 2006
-
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
-
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 !
corsonr
Messages postés
8
Date d'inscription
mercredi 29 mars 2006
Statut
Membre
Dernière intervention
1 décembre 2006
-
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 !
peterklm
Messages postés
15
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
5 décembre 2005
-
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.
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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!
@+
spiritofmarquito
Messages postés
8
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
1 mai 2009
-
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
smartnouse
Messages postés
1
Date d'inscription
dimanche 11 mars 2007
Statut
Membre
Dernière intervention
16 avril 2007
-
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!
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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.
fahr451
Messages postés
8
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
21 août 2009
-
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
-
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
-
Merci !!! c'est exactement ce qui va me permettre d'avancer ;)
FhX
Messages postés
2368
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3 -
Hop, je met le 100ème commentaire :D
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
Hahaha petit malin. ;-)
fahr451
Messages postés
8
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
21 août 2009
-
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
-
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
-
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
-
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
-
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
-
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
-
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...
fahr451
Messages postés
8
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
21 août 2009
-
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.
merci51
Messages postés
36
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2009
-
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+
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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!!!
cs_tadjidine
Messages postés
7
Date d'inscription
lundi 26 mars 2007
Statut
Membre
Dernière intervention
28 septembre 2010
-
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
-
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.
merci51
Messages postés
36
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2009
-
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
-
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à.
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
désolé pour le débordement....
merci51
Messages postés
36
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2009
-
Bon plan, c'est ou qu'on signe ??
peterklm
Messages postés
15
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
5 décembre 2005
-
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.
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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
-
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
-
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
-
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.
antony982
Messages postés
1
Date d'inscription
mercredi 23 mars 2005
Statut
Membre
Dernière intervention
14 août 2007
-
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
nmat_fr
Messages postés
6
Date d'inscription
mardi 29 juin 2004
Statut
Membre
Dernière intervention
15 octobre 2007
-
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
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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.
Steph666
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
5 juin 2008
-
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
-
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
merci51
Messages postés
36
Date d'inscription
mercredi 10 mars 2004
Statut
Membre
Dernière intervention
17 novembre 2009
-
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 ;)
Steph666
Messages postés
74
Date d'inscription
jeudi 6 mars 2003
Statut
Membre
Dernière intervention
5 juin 2008
-
Merci pour tous vos compliments ça fait toujours plaisir.

Quant aux évolutions, je serais impatient d'y jeter un œil.
nmat_fr
Messages postés
6
Date d'inscription
mardi 29 juin 2004
Statut
Membre
Dernière intervention
15 octobre 2007
-
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;
}

}
nmat_fr
Messages postés
6
Date d'inscription
mardi 29 juin 2004
Statut
Membre
Dernière intervention
15 octobre 2007
-
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;
}
}
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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
-
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
-
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!
cs_Naomy
Messages postés
5
Date d'inscription
lundi 16 juin 2008
Statut
Membre
Dernière intervention
26 juin 2008
-
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
-
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
-
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
-
[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.
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
Mais fais attention à ne pas dévier, ici on parle de la classe panier, sinon tu risque de voir ton message partir aux oubliettes... ;-)
cs_Naomy
Messages postés
5
Date d'inscription
lundi 16 juin 2008
Statut
Membre
Dernière intervention
26 juin 2008
-
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
-
pourtant j'ai bien envoyé le mail cette aprem.
lelapinou_69
Messages postés
64
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
10 novembre 2008
-
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
smoggin
Messages postés
4
Date d'inscription
mardi 24 juin 2003
Statut
Membre
Dernière intervention
26 mai 2007
-
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
-
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
-
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
-
oups, exact. Je corrige chez moi du coups! hahaha

Je t'en prie
Ncosy
Messages postés
1
Date d'inscription
jeudi 31 janvier 2008
Statut
Membre
Dernière intervention
12 janvier 2009
-
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
-
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
lina22
Messages postés
34
Date d'inscription
vendredi 10 juillet 2009
Statut
Membre
Dernière intervention
25 août 2009
-
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
tgwada
Messages postés
1
Date d'inscription
jeudi 8 octobre 2009
Statut
Membre
Dernière intervention
2 avril 2010
-
Bonjour, désolé de faire ressortir ce vieux forum mais j'ai un problême en ce qui concerne les frais de port.

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

est ce que qqlun peut m'aider?

merci d'anvance
cs_JessicaRabbit
Messages postés
1
Date d'inscription
mercredi 27 octobre 2010
Statut
Membre
Dernière intervention
27 octobre 2010
-
Bonjour!
Je déterre ce sujet en espérant que l'on pourra me répondre.
Devant réaliser un panier d'achat pour un site internet, j'ai repris le code donné ici, en y apportant des modifications. D'ailleurs, merci pour ce code qui m'a beaucoup aidé étant donné que je n'avais aucune notion de la poo (je débute seulement en php).

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

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

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

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

/** session **/
session_start();

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

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

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

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

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

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

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

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

/**FONCTION APPELEE DS DESCRIPTION_ARTICLE **/

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

/**FONCTIONS APPELEES DANS CONSULTATION_PANIER**/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/**FONCTIONS APPELEES DANS AJOUT_PANIER **/

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

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

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

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

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

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

}

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

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

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

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

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

/** session **/
session_start();

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

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

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

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

</html>';

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

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

$out = '

<center>

<fieldset>
Votre Panier

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

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

----

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

</td>

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

$out .= '

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

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

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

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

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

Voilà pour l'essentiel, j'espère avoir été assez claire sur mon problème.
Merci d'avance.
dpk1
Messages postés
11
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
2 avril 2012
-
bonjour à tous
je suis débutant et se script et toutes ces explications sont merveilleux

spécial dédicace à Steph666 et à lelapinou_69

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

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

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

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

avez vous une idée
dpk1
Messages postés
11
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
2 avril 2012
-
re-bonjour

voici ma variable propalarticle";N;

string(485) "O:6:"Panier":9:{s:7:"article";a:1:{s:23:"1589526272_49f3364a23_o";a:5:{s:3:"qte";s:1:"1";s:4:"prix";s:5:"11.50";s:9:"montantHT";d:11.5;s:10:"montantTTC";d:13.7539999999999995594635038287378847599029541015625;s:13:"propalarticle";N;}}s:9:"nbarticle";i:1;s:7:"totalHT";d:11.5;s:8:"totalTTC";d:13.7539999999999995594635038287378847599029541015625;s:3:"TVA";d:19.60000000000000142108547152020037174224853515625;s:13:"calculmontant";b:1;s:4:"port";i:0;s:8:"typeport";i:0;s:7:"portTVA";i:0;}"
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;
}
?>
Commenter la réponse de fg85