Version complète: sur le forum Webmaster Hub : prob envoi mail avec listes produits commandés
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
kida
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 smile.gif

CODE
$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:

CODE
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>";
}
NorSeb
Bonjour,

La solution la plus simple sans trop bouger ton code pourrait être :
CODE
$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

CODE
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 blush.gif
Spidetra
[quote=kida,mardi 21 mars 2006, 16h29]
CODE
$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
SQL
SELECT num_cmd, produits, qte, id, nom, prix
FROM produits INNER JOIN Command_detail ON produits.id = Command_detail.produits
WHERE 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
Spidetra
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
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.