Aller au contenu

prob envoi mail avec listes produits commandés


Sujets conseillés

Posté

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>";
}

Posté

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 :blush:

Posté

$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, 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

Posté

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

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...