ao2208
Messages postés56Date d'inscriptionmercredi 1 novembre 2000StatutMembreDernière intervention30 novembre 2005 10 nov. 2005 à 18:10
oui tu as raison voici pour le formulaire:
<form name="form1" method="post" action="../../commandes/panier.php">
<table width="100%" border="0" cellpadding="0" cellspacing="0" >
----,
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 10 nov. 2005 à 20:55
Oups, désolé pour l'encodage ...
Au fait le :
session_start();
if (isset($_SESSION['panier']['nb_art'])) {
$id_art_sel=$_SESSION['panier']['nb_art']+1;
} else {$id_art_sel=1;}
(...)
';
dans le formulaire ne sert pas à grand chose, il suffit de mettre $_SESSION['panier']['nb_art']++; dans panier.php mais dans ce cas il faut s'assurer que la valeur ne puisse être incrémentée si l'utilisateur reload la page.
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 11 nov. 2005 à 12:40
Je n'ai pas eu le temps de tester sur ma machine, mais :
Vérifies tu l'existence de données POST avant d'executer les lignes suivantes :
$_SESSION['panier']['nb_art']= $_POST['id_art']; // nombre d'articles dans le panier
$_SESSION["panierID$_POST[id_art]"]['ref'] = $_POST['ref'];
$_SESSION["panierID$_POST[id_art]"]['designation'] = $_POST['designation'];
$_SESSION["panierID$_POST[id_art]"]['prixht'] = $_POST['prixht'];
$_SESSION["panierID$_POST[id_art]"]['quantite'] = $_POST['quantite'];
Si ce n'est pas le cas et que tu appelles ta page panier directement (ce que tu fais), la valeur du nombre d'articles ($_SESSION['panier']['nb_art']) va être indéfinie, donc la boucle d'affichage des articles va donner :
for ($i=1;$i <= RIEN ; $i++) { ==> pas d'affichage mais les articles ne sont pas perdus, ils sont dans les variables de session, mais non affichés.
Il te faut donc conditionner les lignes ci dessus avec un truc du genre :
if (!empty($_POST['id_art'])) { // s'il s'agit d'un ajout au panier et non d'un affichage simple
$_SESSION['panier']['nb_art']=$_ etc...
}
C'est un minimum, je te conseille en plus de vérifier toutes les valeurs POST pour solidifier et sécuriser un peu ton script.
ao2208
Messages postés56Date d'inscriptionmercredi 1 novembre 2000StatutMembreDernière intervention30 novembre 2005 11 nov. 2005 à 12:48
merci pour ta reponse, mais je commence a me noyer, serait - il possible que tu me donne plus d'indic sur le code, je vais clarifier le code ulterieurement mais la c'est trés urgent pour mon boulo, donc je te serai trés reconnaissant si tu m'aider un peu plus.
ps: ton aide m'a beaucoup fait avancer
ao2208
Messages postés56Date d'inscriptionmercredi 1 novembre 2000StatutMembreDernière intervention30 novembre 2005 11 nov. 2005 à 18:13
merci, tu m'as sorti la tete de l'eau, je v prendre le temps d'analyser ton code et reposterai dans la soirée avec plus de precision.
Felicitation pour tes connaissances et ta disponibilité.
ao2208
Messages postés56Date d'inscriptionmercredi 1 novembre 2000StatutMembreDernière intervention30 novembre 2005 12 nov. 2005 à 01:27
Bonsoir, pour le payement cela se passera par carte par un formulaire securisé, virement, cheque redirection choix du paiement apres validation commande à l'heure actuelle j'ai ceci qu'il faudra que je modifi.
ET aussi comme tu l as di juste avant la possibilité de suprimer des articles dans le panier, de multiplier par 19.6 / 100 pour le prix TTC , les totaux, les doublons de refs ce n'est pas trés joli ms peut etre pas prioritaire. Voila
ao2208
Messages postés56Date d'inscriptionmercredi 1 novembre 2000StatutMembreDernière intervention30 novembre 2005 12 nov. 2005 à 19:24
BONJOUR, il me reste un souci principal aprés je pourrais me debrouiller je sais mieux ou je vais:
je voudrais juste pouvoir calculer le total hors taxes sur le panier: ci joint le code de mon panier avec la participation principale de Kohntark,
<?php
/* variables panier sous la forme :
$_SESSION['panier'][ID article][array(ref=>blabla,designation=>blabla,prixht=>blabla,quantite=>blabla);
*/
session_start();
if (isset($_POST['id_art'])) { // si il s'agit de l'ajout d'un article
$_SESSION['panier'][$_POST['id_art']]['ref'] = $_POST['ref'];
$_SESSION['panier'][$_POST['id_art']]['designation'] = $_POST['designation'];
$_SESSION['panier'][$_POST['id_art']]['prixht'] = $_POST['prixht'];
$_SESSION['panier'][$_POST['id_art']]['quantite'] = $_POST['quantite'];
}
$nb_art=count($_SESSION['panier']); // nombre d'articles dans le panier
if (count($_SESSION['panier']) > 0) { // si le panier n'est pas vide
echo'
<style type="text/css">
<!--
body,td,th {
color: #006699;
}
body {
background-image: url(../design/styles/fond.gif);
}
-->
</style>
<link href="../design/styles/styles.css" rel="stylesheet" type="text/css">
Reference,
Description,
Prix HT €,
Quantité
';
// affichage du contenu du panier
for ($i=1;$i <= $nb_art; $i++) { // pour chaque article du panier
echo ''.$_SESSION['panier'][$i]['ref'].',
'.$_SESSION['panier'][$i]['designation'].',
'.$_SESSION['panier'][$i]['prixht'].',
'.$_SESSION['panier'][$i]['quantite'].'
';
}
} else echo 'Votre panier ne contient aucun article.'; // le client n'a pas d'article dans son panier
?>
<style type="text/css">
<!--
.Style2 {color: #006699; font-weight: bold; font-size: 12px; font-family: Geneva, Arial, Helvetica, sans-serif; }
-->
</style>
variables panier sous la forme :
$_SESSION['panier'][reference][array(designation=>blabla,prixht=>blabla,quantite=>blabla);
Anti reload :
Afin de protéger le panier d'une incrémentation lors d'un reload de la page ou d'un prec/suiv, chaque chargement du formulaire
est identifié avec un ID unique ($_POST['panier_lock']) qui est
également enregistré dans une variable de session
($_SESSION['panier_lock'])
Ces deux variables sont ensuite comparées à l'arrivée sur la page
panier. Si elles sont identiques, l'article est ajouté, puis la
variable
de session est détruite en fin de script.
*/
session_start();
$tot_ht=0; // montant total HT
if (!isset($_SESSION['panier'])) $_SESSION['panier']=array();
if (isset($_POST['ref']) && isset($_SESSION['panier_lock'])
&& isset($_POST['panier_lock'])) { // si il s'agit de l'ajout
d'un article et que la page n'a pas déjà été appellée
// un peu de sécurité
$prixht=$_POST['prixht'];
settype($prixht,"float");
$ref=strip_tags($_POST['ref']);
$quantite=$_POST['quantite'];
settype($quantite,"int");
if ($prixht==0) $quantite=0;
// protection reload
if ($_POST['panier_lock']===$_SESSION['panier_lock']) {
$panier_lock=true; // autorise la modification du panier
} else {
$panier_lock=false; // interdit la modification du panier
}
if ($panier_lock==true) { // autorisation ajout panier
if (array_key_exists($ref, $_SESSION['panier'])) { // la ref existe déjà dans le panier
$_SESSION['panier'][$ref]['quantite']+=$_POST['quantite']; // ajout de
la quantité à celle existante pour le même article
} else { // la ref n'est pas encore présente dans le panier, on l'ajoute
merci pour ta reponse super developpée, donc la tout fonctionne le seul probleme, c'est au niveau des autres formulaires dans la page ils renvoient tous sur le panier a mon avis ca vient de la session en entete:
<?php
session_start();
if (isset($_SESSION['panier']['nb_art'])) { // controle si un article existe deja dans le panier
$id_art_sel=$_SESSION['panier']['nb_art']+1; // numero de l'article qui sera ajout
} else {$id_art_sel=1;} // si il n'y a pas d'articles dj prsent