8721 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Pour mon projet je dois faire un site e-commerce et je pêche un peu sur le calcul du total des items du caddie.
J'ai fait une table card avec un champ 'pid' qui contient l'id du produit tel qu'inséré dans la table 'produits' ainsi qu'un champ 'mid' qui contient l'identifiant du membre.
Je recupère le champ 'card.quantité' et 'produits.prix' et je veux les traiter pour qu'à la fin de ma boucle while fetch j'ai la somme des prix * quantité.

Pour l'instant je suis arrivé à ça mais ca ne me calcule pas le résultat juste.
Existe-t-il peut-être un moyen de le faire directement dans la requête ? (j'ai essayé SUM(prix) AS total mais ca ne multiplie pas par les quantités).

Merci à tous

				<?php
$sql = 'SELECT prix, quantite, prix FROM produits, card WHERE produits.id = card.pid AND card.mid='.$_SESSION['mid'].'';
							$req = $bdd->query($sql);
							while($d = $req->fetch())
							{
							?>
								<p>
								<?php
								$prixTotal = ($d['prix'] * $d['quantite']);
								echo $prixTotal;
								$total = $prixTotal + $prixTotal;
								?>
								<br/>
							<?php
							}
							?>
							<strong>Total articles TTC : </strong><span class="prixProduit" style="font-size: 1.2em; font-weight:bold;">EUR <?php echo round($total, 2);?></span>

Modifié par destroydaworld (28 Feb 2013 - 14:27)
salut,
Il semble que tu comptes deux fois le premier article.
A la fin mais dans la boucle, tu dis total egal prix + prix.

Sinon rien a voir mais plutot que de fermer le php pour mettre un br puis ouvrir pour un echo pourquoi pas
Echo 'br'.$var (j ai pas mis les sup et inf parceque je suis le le tel et c est penible)
Ca allegera ton code et tu t y retrouvera mieux.

Avant ta boucle : $total egal 0
Dans la boucle : $total egal $total + $prix.
C'est bon, j'ai réussi ! Smiley lol

Pour info :


							<?php
							$sql = 'SELECT (produits.prix * card.quantite) AS soustotal FROM produits, card WHERE produits.id = card.pid AND card.mid='.$_SESSION['mid'].'';
							$req = $bdd->query($sql);
							$total = 0;
							while($d = $req->fetch())
							{
								$total += $d['soustotal'];
							}
							$total = round($total, 2);
							?>
							<span style="background: red;"><strong>Total articles TTC : </strong><span class="prixProduit" style="font-size: 1.2em; font-weight:bold;">EUR <?php echo $total;?></span></span>
J ai pas compris pourquoi on doit arrondir, les prix unitaires sont deja au centieme, en multipliant et additionnant tu trouveras rien dessous. Alors simple precaution ou utilite reel ?

Quand je ne sais pas je demande. Un proverbe Japonais dit : mieux vaut etre ambarasse une. Fois que toute sa vie. (Lol)