8795 sujets

Développement web côté serveur, CMS

Bonjour
Je dois a partir d'un panier faire la somme des produits achetées
pour ca j'ai une table achat ou il y a des id des produits et la quantité achetée ensuite une table produit ou je vais chercher le prix que je multiplie par la quantité
jusque là ca va
le hic vient quand je dois additionner le tout
et là ca bug
j'arrive a des sommes partielles et une somme totale mais je ne fais que rester dans la boucle
il faudrait que j'en sorte mais là je bloque
si qqun a 1 mn pour regarder le code
merci
Nadege
// pour le client a l'id_client on recherche les achats correspondant dans la base ACHAT
           
                $achat_client = lire_unseulachat($_GET['id_client']); 
                        foreach($achat_client as $listing){
                        $produit= $listing['id_produits'];
                           
                           
                           //ensuite avec l'id produit on peut voir le descriptif du produit dans la base achat         
                                        $mon_pdt = lire_unpdt($produit); //pour choisir l'id du produit acheté
                                        $nb_pdt = count($mon_pdt); 
                                        for($i=0; $i<$nb_pdt; $i++){
                                           echo '<p>';
                                           echo '<div id="ref">'.$mon_pdt[$i]["ref"].'</div><div id="prod"><img src="images/coche.gif" height ="15">'.$mon_pdt[$i]["titre"].' ('.$mon_pdt[$i]["contenance"].'ml )</div>';       
                                           echo $mon_pdt[$i]["prix"].' € x '.$listing["quantite"];
                                           echo ' ='.$listing["quantite"]*$mon_pdt[$i]["prix"].' €';
                                           echo '</p>';
                                           $total_pdt+=$listing["quantite"]*$mon_pdt[$i]["prix"];
                                            echo 'le total est de '.$total_pdt; //et c'est pas bon
                                                }
                        }       
total de la commande =.... € 


Modifié par Nad21 (20 May 2010 - 19:54)
Bonjour,

Il me semblerais plus logique d'afficher le résultat après la boucle de calcul de la somme. Place le "echo" du résultat après la boucle et ça devrait fonctionner.
Modifié par mal (20 May 2010 - 20:12)
Bonsoir,

J'ai écrit rapidement et schématiquement ce que je ferais (pas de recherche sur la sécurité et la connexion sql ).


$total_pdt = 0; // instancié pour calcul dans boucle
mysql_query("SELECT * FROM achats WHERE id-client = ".$_GET['id_client']); // sélection articles client
while($resultat_sql = mysql_fetch_assoc()) { // boucle résulat articles
	"SELECT * FROM produit WHERE id_produit = ".$resultat_sql['id_produit']; // sélection détails articles
	while ($loop_sql = mysql_fetch_assoc()) { // boucle calcul
		$total_pdt+=$loop_sql["quantite"]*$loop_sql["prix"]; 
	}
}
echo 'le total est de '.$total_pdt; // retour total pour le client


Attention à ton code html.

<div id="ref">
<!-- les id doivent être unique dans la page -->


Smiley smile
merci de ta réponse
j'ai une erreur dans le resultat
Warning: Wrong parameter count for mysql_fetch_assoc()
j'ai corrigé les noms pour ma BDD mais ya tjrs cette erreur
		$total_pdt = 0; // instancié pour calcul dans boucle 
		mysql_query("SELECT * FROM achats WHERE id_client = ".$_GET['id_client']); // sélection articles client 
		while($resultat_sql = mysql_fetch_assoc()) { // boucle résulat articles   
		"SELECT * FROM produits WHERE id = ".$resultat_sql['id_produits']; // sélection détails articles     
		while ($loop_sql = mysql_fetch_assoc()) { 
		// boucle calcul         
		$total_pdt+=$loop_sql["quantite"]*$loop_sql["prix"];      } } 
		echo 'le total est de '.$total_pdt; // retour total pour le client

en fait a ce niveau mysql_query("SELECT * FROM achats WHERE id_client = ".$_GET['id_client']); // sélection articles client
il faut que je recupere l'id_produits de achat qui correspond a l'id de produits

encore merci
en fait
Bonsoir,

Comme je te l'ai dit je ne suis pas rentré dans le détail mais il me semble que tu pourrais faire une requête sql avec jointure pour trouver tous les produis que le client à acheté.


SELECT * FROM achats LEFT JOIN produits ON id = id_produits WHERE id_client = ".$_GET['id_client']
// bien sur à adapter selon tes tables et noms de champs


cela supprimerais une boucle while().

Et avec un autre approche du problème, je pense qu'avec une requête sql tu pourrais aussi faire le calcul du total achat pour le client.

Concernant l'erreur mysql, le code que je t'ai donné est juste un exemple vite fait, il n'est pas bon en syntaxe.
Avant chaque appel de mysql_fetch_assoc() tu dois exécuter une requête avec mysql_query().

Smiley cligne