gontran Posté 25 Avril 2006 Posté 25 Avril 2006 (modifié) bonjour, j'ai un léger probleme. je suis en cours de réalisation d'un site de vente de vin. j'ai donc réalisé mon catalogue ainsi que la page "ajouter au panier" le probleme que je rencontre est le suivant : http://cmonweb.net/vin/add_cart.php?id=9 sur cette page je voudrais que lorsqu'on modifie la quantitée ca me renvoi sur une page qui racalcule le total ttc. je vous joins le code de mes 2 fonctions function add_cart (){ $idurl=$_GET['id']; $query02='select * from vin where id="'.$idurl.'" '; $queryvin=mysql_query($query02); $donnees02=mysql_fetch_array($queryvin); //définition des variables $couleur=$donnees02['couleur']; $prix=$donnees02['prix']; $mill=$donnees02['millesime']; $chato=$donnees02['chato']; $appelation=$donnees02['appelation']; $photo=$donnees02['photo']; //affichage des resultats de la rqt echo '<div class="liste">'; echo '<div class="image">'; echo '<img src='.$photo.'>'; echo '</div>'; echo '<p>Nom du domaine :</p>'; echo '<h2>'.$chato.'</h2>'; echo '<p> </p>'; echo '<p>Millésime : '.$mill.'</p>'; echo '<p>Appélation : '.$appelation.'</p>'; echo '<p>Prix : '.$prix.' </p>'; echo '<p> </p>'; echo '<form name="quantite" method="POST" action="">'; echo '<p>Quantitée : <select name="quantite" onchange="calcul_total_ttc ();"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> </select> en bouteille.</p>'; echo '</form>'; echo '<p> </p>'; echo '<p>Total TTC : '.$prix.' </p>'; echo '</div>'; } FONCTION DE CALCUL PAR RAPPORT A LA QUANTITE function calcul_total_ttc (){ $quantiteurl=$_POST['quantite']; $idurl=$_GET['id']; $query02='select * from vin where id="'.$idurl.'" '; $queryvin=mysql_query($query02); $donnees02=mysql_fetch_array($queryvin); //définition des variables $couleur=$donnees02['couleur']; $prix=$donnees02['prix']; $mill=$donnees02['millesime']; $chato=$donnees02['chato']; $appelation=$donnees02['appelation']; $photo=$donnees02['photo']; $quantite=$donnees02['prix'] * $quantiteurl; //affichage des resultats de la rqt echo '<div class="liste">'; echo '<div class="image">'; echo '<img src='.$photo.'>'; echo '</div>'; echo '<p>Nom du domaine :</p>'; echo '<h2>'.$chato.'</h2>'; echo '<p> </p>'; echo '<p>Millésime : '.$mill.'</p>'; echo '<p>Appélation : '.$appelation.'</p>'; echo '<p>Prix : '.$prix.' </p>'; echo '<p> </p>'; echo '<form name="quantite">'; echo '<p>Quantitée : <select name="quantite" onChange="calcul_total_ttc ();"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> </select> en bouteille.</p>'; echo '</form>'; echo '<p> </p>'; echo '<p>Total TTC : '.$quantite.' </p>'; echo '</div>'; } alors j'ai donc essayer l'etat "onChange" sur ma balise "select" mais rien ne se passe. pourriez vous me donner une explication par avance merci. pour info l'adresse du site : www.cmonweb.net/vin/add_cart.php?id=9 Modifié 25 Avril 2006 par gontran
gontran Posté 26 Avril 2006 Auteur Posté 26 Avril 2006 Bonjour, Comme je n'ai pas de réponse pour ce post, je me demande si j'ai été assez explicite ?? Dite le moi et je ferai en sorte de compléter ma requete. Merci
bshop Posté 26 Avril 2006 Posté 26 Avril 2006 bonjour, deja 1) code ca en javascript plutot qu'en PHP, le ONCHANGE lance une fonction javascript. 2) tu utilises une méthode POST alors que ta fonction doit aller chercher le nombre selectionné, le multiplier par le prix unitaire et modifier le contenu d'une div....et que cette fonction soit lancée par le ONCHANGE de ta selectbox... bon courage
robinsonvendredi Posté 26 Avril 2006 Posté 26 Avril 2006 En ce qui me concerne je suis un peu dérouté par l'ergonomie de ton panier. Je laisse les specialistes de php te répondre sur le plan de ton code, mais (si je peux me permettre) le fonctionnement de ton panier n'est pas très habituel. En général la sélection des quantités se fait dès la page liste de produits, ainsi que sur la fiche détaillée d'un produit. Donc tu as (habituellement) un bouton "ajouter au panier" qui poste la quantité sur le module panier. C'est au niveau de ce module que tu peux modifier les quantités : donc tu as un bouton "recalculer le panier" qui va reposter la page pour mettre à jour soit une variable de session soit une table (panier persistant). Est-ce que c'est cela que tu souhaites faire ou autre chose ? Peux-tu nous en dire plus à ce sujet ? <edit> Suite au post de bshop, si tu veux reposter une page en javascript : onChange="location=document.nom_formulaire.nom_selectbox.options[document.nom_formula re.nom_selectbox.selectedIndex].value;" les valeurs des options de ta selectbox sont des URL relatives avec en variables...tout ce dont tu as besoin. bon courage! <edit>
gontran Posté 27 Avril 2006 Auteur Posté 27 Avril 2006 (modifié) Oui je veux faire un panier persistant de 15 jours Ta remarque au niveau de l'endroit ou l'on choisi la quantitée est pertinante. Je n'y avais pas pensé. Par contre je ne voudrais pas passer par un bouton "recalculer le panier" Je voudrais que dés que l'internaute a choisi la quantité à partir de la liste ca le bascule vers la page qui a recalculer le prix par rapport à la quantité sélectionnée. Merci Modifié 27 Avril 2006 par gontran
robinsonvendredi Posté 27 Avril 2006 Posté 27 Avril 2006 Oui je veux faire un panier persistant de 15 jours <{POST_SNAPBACK}> Donc tu enregistres le panier dans une table, un peu comme s'il s'agissait d'une commande, sauf qu'elle est ouverte et non pas fermée. Attention, c'est un sujet complexe, car une quantité qui était disponible au moment de la constitution du panier peut ne plus l'être. Le délai de livraison peut aussi avoir changé. Le compte du client peut avoir évolué (tarifs, etc...) C'est le problème classique de la "non-répudiation" en e-commerce : il y a des conséquences techniques à bien estimer avant de se lancer. Au niveau juridique, la question des commandes dites "ouvertes" peut aussi se poser.A voir dans tes conditions de ventes, jusqu'où va la possibilité de modification - et de refus d'une commande avec des reliquats livrés en retard. Par contre je ne voudrais pas passer par un bouton "recalculer le panier" Je voudrais que dés que l'internaute a choisi la quantité à partir de la liste ca le bascule vers la page qui a recalculer le prix par rapport à la quantité sélectionnée. Merci <{POST_SNAPBACK}> Donc c'est bien le javascript dont on t'a parlé: onChange="location=document.nom_formulaire.nom_selectbox.options[document.nom_formula re.nom_selectbox.selectedIndex].value;" les valeurs des options de ta selectbox = URL de la page panier avec en variables...tout ce dont tu as besoin.
gontran Posté 1 Mai 2006 Auteur Posté 1 Mai 2006 (modifié) Bonjour, onChange="location=document.nom_formulaire.nom_selectbox.options[document.nom_formulare.nom_selectbox.selectedIndex].value;" Pourrais-tu m'expliquer un peu cette fonction. ? Me faut-il un petit programme en JavaScript pour que cette fonction puisse fonctionner ? Merci Modifié 1 Mai 2006 par gontran
robinsonvendredi Posté 1 Mai 2006 Posté 1 Mai 2006 Non, ce n'est pas nécessaire. L'évènement onChange déclenche le rechargement de la page, avec comme URL la valeur de l'option sélectionnée. Si tu souhaites que la navigation mène à une page "panier", l'URL ressemblera à monpanier.php?variable1=...&variable2=... A toi de générer les différentes options à partir de ta base de données. par exemple , variable1=quantité, variable2=ID_produit, etc... ex: <select name="nom_selectbox" onChange="location=document.nom_formulaire.nom_selectbox.options[document.nom_formula re.nom_selectbox.selectedIndex].value;" > <option value="monpanier.php?variable1=...&variable2=...>1</option> </select>
gontran Posté 1 Mai 2006 Auteur Posté 1 Mai 2006 (modifié) OK Je comprend mieux. Je vais aller voir ce que ca donne de suite. Tu as bien une balise <form> au dessus de la balise <select> ? Merci Modifié 1 Mai 2006 par gontran
gontran Posté 1 Mai 2006 Auteur Posté 1 Mai 2006 (modifié) Je vous montre ma fonction : function list_couleur (){ $couleururl=$_GET['couleur']; $querry_couleur=mysql_query("SELECT id, appelation, chato, millesime, photo, prix from vin WHERE couleur='$couleururl' ORDER BY chato ASC"); while ($couleur=mysql_fetch_array($querry_couleur)){ $id=$couleur['id']; $appelation=$couleur['appelation']; $prix=$couleur['prix']; $mill=$couleur['millesime']; $chato=$couleur['chato']; $photo=$couleur['photo']; //affichage des resultats de la rqt echo '<div class="liste">'; echo '<div class="image">'; echo '<img src='.$photo.'>'; echo '</div>'; echo '<p>Nom du domaine :</p>'; echo '<h2>'.$chato.'</h2>'; echo '<p> </p>'; echo '<p>Millésime : '.$mill.'</p>'; echo '<p>Appélation : '.$appelation.'</p>'; echo '<p>Prix : '.$prix.' </p>'; echo '<p> </p>'; echo '<form name="form1" id="form1">'; echo '<p><select name="quantite" onChange="location=../add_cart.php?id='.$couleur['id']&quantite=quantite.value"> <option value="../caddie/add_cart.php?id='.$couleur['id'].'&quantite=1">1</option> <option value="../caddie/add_cart.php?id='.$couleur['id'].'&quantite=2">2</option> <option value="../caddie/add_cart.php?id='.$couleur['id'].'&quantite=3">3</option> <option value="../caddie/add_cart.php?id='.$couleur['id'].'&quantite=4">4</option> <option value="../caddie/add_cart.php?id='.$couleur['id'].'&quantite=5">5</option> <option value="../caddie/add_cart.php?id='.$couleur['id'].'&quantite=6">6</option> <option value="../caddie/add_cart.php?id='.$couleur['id'].'&quantite=7">7</option> <option value="../caddie/add_cart.php?id='.$couleur['id'].'&quantite=8">8</option> <option value="../caddie/add_cart.php?id='.$couleur['id'].'&quantite=9">9</option> </select></p>'; echo '</form>'; echo '<p> </p>'; echo '<p><a href="../caddie/add_cart.php?id='.$couleur['id'].'" title="'.$couleur['chato'].'"> Ajouter au panier</a></p>'; echo '</div>'; }//fin du while }//fin de la fonction Cette fonction doit me renvoyer sur la page add_cart.php Elle me recalcule le prix total. En l'état ca ne fais rien du tout a je bloque. Comment faire. Merci Modifié 1 Mai 2006 par gontran
robinsonvendredi Posté 1 Mai 2006 Posté 1 Mai 2006 OK Je comprend mieux. Je vais aller voir ce que ca donne de suite. Tu as bien une balise <form> au dessus de la balise <select> ? Merci <{POST_SNAPBACK}> Oui : <form name="nom_formulaire">
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant