kida Posté 21 Mars 2006 Partager Posté 21 Mars 2006 Bonjour à tous, Voici quelques heures que je bagarre avec ceci, Je souhaite envoyer un mail de confirmation de commande (l'envoi fonctionne) avec la liste des produits commandés. Mon problème est que, dans le corps de mon mail je dois envoyer plusieurs fois la ligne avec les infos produits. (je sors la liste de ma bdd selon num_commande) J'ai essayé avec for et foreach mais marche pas. Si une personne peut m'indiqué mon erreur je veut bien. Merci d'avance $sql2='Select num_cmd,produits,qte From Comand_detail Where num_cmd="'.$num.'"';$req=mysql_query($sql2) or die ('Erreur SQL!'.$sql2.mysql_error());while($list=mysql_fetch_array($req)){$prod=$list['produits'];$qte=$list['qte'];$query='Select id,nom,prix From produits Where id="'.$prod.'"';$reponse=mysql_query($query) or die ('Erreur SQL!'.$query.mysql_error()); while($produit=mysql_fetch_array($reponse)) { $nom_prod=$produit['nom']; $prix=$produit['prix']; $prix_ligne=$qte*$prix; }} Ligne du mail: foreach($list as $produits){$corps.="<tr><tdheight=15>".$nom_prod."</td><td>".$qte."</td><td>".$prix."</td><td>".number_format($prix_ligne,2,'.','')."</td></tr>";} Lien vers le commentaire Partager sur d’autres sites More sharing options...
NorSeb Posté 21 Mars 2006 Partager Posté 21 Mars 2006 Bonjour, La solution la plus simple sans trop bouger ton code pourrait être : $i = 0; while($produit=mysql_fetch_array($reponse)){ $tableau[$i]['nom']=$produit['nom']; $tableau[$i]['prix']=$produit['prix']; $tableau[$i]['prix_ligne']=$qte*$prix;} puis while(list(, $tab) = each($tableau)) {$corps.="<tr><tdheight=15>".$tab['nom']."</td><td>".$qte."</td><td>".$tab['prix']."</td><td>".number_format($tab['prix_ligne'],2,'.','')."</td></tr>";} A tester... je ne suis pas sûr de moi Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spidetra Posté 21 Mars 2006 Partager Posté 21 Mars 2006 $sql2='Select num_cmd,produits,qte From Comand_detail Where num_cmd="'.$num.'"';$req=mysql_query($sql2) or die ('Erreur SQL!'.$sql2.mysql_error());while($list=mysql_fetch_array($req)){$prod=$list['produits'];$qte=$list['qte'];$query='Select id,nom,prix From produits Where id="'.$prod.'"';$reponse=mysql_query($query) or die ('Erreur SQL!'.$query.mysql_error()); while($produit=mysql_fetch_array($reponse))[/SQL] { $nom_prod=$produit['nom']; $prix=$produit['prix']; $prix_ligne=$qte*$prix; }} 1. essaye de simplifier ta requete avec un truc du style ( un peu au pif, je connais pas la structure de tes tables SELECT num_cmd, produits, qte, id, nom, prixFROM produits INNER JOIN Command_detail ON produits.id = Command_detail.produitsWHERE num_cmd = $num 2. Dans ta boucle while, il me semble que tu écrase à chaque tout tes valeurs de noms, prix et qté. Donc tu ne peux pas les afficher Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spidetra Posté 21 Mars 2006 Partager Posté 21 Mars 2006 Petite remarque : avec ton code tu doit faire N+1 requêtes pour pouvoir afficher N lignes de produits. Si tu fait un INNER JOIN entre tes deux tables tu vas faire une seule requête On ne met jamais de requête dans une boucle Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant