boucles + sommes de résultats

Eléphant du PHP | 186 Messages

17 mars 2008, 19:28

Bonjour à tous!

Dans le cadre d'un site gérants des commandes de produits, j'affiche sur une page la liste des commandes effectuées avec le montant total pour chaque commande.
Comme certaines commandes ont plusieurs produits, je boucle (dans la boucle générant la liste des commandes) tous les produits de chaque commande.
Mon problème réside dans le calcul et surtout l'obtention du total pour chaque commande, sachant que pour chaque produit, je dois faire le calcul suivant; quantité*prix du produit.
Ainsi, ce que j'essaie de faire, c'est:

Code : Tout sélectionner

<début boucle des commandes> <début boucle des produits pour chaque commande> ss-total produit=prix*quantité </fin boucle produits> total des produits pour la commande </fin boucle des commandes>
Pour le moment, j'obtiens la bonne somme pour la première commande mais pour les sommes suivantes, elles reprennent les résultats des commandes précédentes.

Je vous donne le code que j'utilise:
while($row_commande=mysql_fetch_assoc($rs_commande)) { // boucle de chaque commande
						
						$query_montant="SELECT qte_produit, prix_produit, taux_tva FROM tbl_commande_produit, tbl_tva WHERE tbl_commande_produit.tva_produit=tbl_tva.id_tva AND commande_id='".$row_commande['id_commande']."'";
						$rs_montant=mysql_query($query_montant, $conn_panier) or die(mysql_error());
						
							while($row_montant=mysql_fetch_assoc($rs_montant)) { //boucle des produits de chaque commande
								$prix_article=$row_montant['prix_produit']*$row_montant['qte_produit']*(1+($row_montant['taux_tva']/100));
							$prix+=$prix_article;									
							}
						// j'affiche les éléments de chaque commande, commme la référence, la date, la personne, le total
						echo '
					<tr>
						<td class="titre3">&nbsp;</td>
						<td class="titre3" valign="middle">'.$row_commande['ref_commande'].'</td>
						<td class="titre3" valign="middle">'.$row_commande['date'].'</td>						
						<td class="titre3" valign="middle"><a href="adm-cd-client-fiche.php?client='.$row_commande['id_client'].'" title="voir la fiche du client">'.$row_commande['nom_client'].' '.$row_commande['prenom_client'].'</a></td>
						<td class="titre3" valign="middle" align="right" width="75">'.round($prix,2).' &euro;</td>
						<td class="titre3" valign="middle" width="25">&nbsp;</td>
						<td class="titre3" valign="middle">'.$row_commande['nom_statut'].'</td>
						<td class="titre3" valign="middle" align="center"><a href="adm-cd-commande-fiche.php?commande='.$row_commande['id_commande'].'" title="voir le détail de la commande">Voir &nbsp;<img class="img" src="img/administration/fleche-gris.jpg"/></a></td>
						<td class="titre3" valign="middle"><a href="adm-cd-commande-supprimer.php?commande='.$row_commande['id_commande'].'" title="supprimer la fiche du client">Supprimer &nbsp;<img class="img" src="img/administration/croix.jpg"/></a></td>
					</tr>
					';}
Merci par avance pour toute aide apportée.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

17 mars 2008, 19:41

Si toutes les commandes reprennent le montant précédent, et que tu ne désires pas ce comportement, c'est qu'il faut que tu réinitialises le montant total de la commande au début de la boucle des commandes.

Code : Tout sélectionner

<début boucle des commandes> initialisation du total de la commande <début boucle des produits pour chaque commande> ss-total produit=prix*quantité </fin boucle produits> total des produits pour la commande </fin boucle des commandes>
Modifié en dernier par zeus le 17 mars 2008, 19:42, modifié 1 fois.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 mars 2008, 19:41

Pour le moment, j'obtiens la bonne somme pour la première commande mais pour les sommes suivantes, elles reprennent les résultats des commandes précédentes.
Peut être faudrait-il songer à remettre ta somme à 0 entre deux commandes ? ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 186 Messages

19 mars 2008, 11:20

Merci à vous deux pour vos réponses!

Comme toujours on peut compter sur vous pour élucider nos problèmes, aussi simples ou compliqués soient-ils.

Merci encore.

Bonne continuation à tout le monde...