Récupèrer données d'une requête et les envoyer par mail ???

Eléphant du PHP | 81 Messages

10 déc. 2005, 18:52

Bonjour à tous,
Je n’arrive pas à envoyer par mail toutes les données que je récupère dans ma boucle for. En fait je ne récupère que la dernière boucle.
Je comprends bien pourquoi je ne récupère que la dernière boucle mais je n’arrive pas à trouver la logique pour pouvoir tout récupérer. A mon avis il faut que je sorte tout dans un tableau(array), mais je ne vois pas comment faire !!

Voici mon code :
<?php
$Num=$_SESSION['Nom'];

$r1="select * from clients where Nom='$Num'";
$rq1=mysql_query($r1);
$n1=mysql_num_rows($rq1);

for($i=0;$i<$n1;$i++)
{
$nom_stag=mysql_result($rq1,$i,'Nom_stagiaire');


$message="<html>
    <body>
            <font face=arial size=2>
            <p><b>Nom: </b>{$nom_stag}</p>
            </font>
    </body>
</html>";

}
$mes=$message[$i];
$email_webmaster= "[email protected]";
$subject="pop";
$entete = "MIME-Version: 1.0\r\n";
$entete .= "content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: tutu.com\n";
if (@mail($email_webmaster, $subject, $mes, $entete)){

etc...
?>
meci d'avance pour votre aide.
Pierre

ViPHP
pjl
ViPHP | 2119 Messages

10 déc. 2005, 19:19

mets ton message dans ta boucle.
Qu'est ce qui t'en empèche ?

Eléphant du PHP | 81 Messages

10 déc. 2005, 20:05

oui mais comment mettre le message dans la boucle ?
c'est possible d'extraire $message ?
if (mail($email_webmaster, $subject, $message, $entete)){

?>
si oui comment fait on ?

ViPHP
pjl
ViPHP | 2119 Messages

10 déc. 2005, 20:25

je ne comprends pas la question.

Qu'entends tu par extraire $ message puisqu'il est déjà dans la boucle ?

Eléphant du PHP | 81 Messages

10 déc. 2005, 21:34

le problème c'est que si par exemple la boucle me sort "banane" "poir" "orange" , je ne récupère que la valeur "orange" dans mon mail !! donc la dernière valeur de $message alors que je voudrai récupérer toutes les valeurs.
Si j'intégre dans ma boucle :
if (mail($email_webmaster, $subject, $message, $entete)){ ect.. 
je reçois autant de mail que de valeurs.

je vous remet mon script, car j'avais des erreurs:
<?php
$Num=$_SESSION['Nom'];

$r1="select * from clients where Nom='$Num'";
$rq1=mysql_query($r1);
$n1=mysql_num_rows($rq1);

for($i=0;$i<$n1;$i++)
{
$nom_stag=mysql_result($rq1,$i,'Nom_stagiaire');


$message="<html>
    <body>
            <font face=arial size=2>
            <p><b>Nom: </b>{$nom_stag}</p>
            </font>
    </body>
</html>";

}

$email_webmaster= "[email protected]";
$subject="pop";
$entete = "MIME-Version: 1.0\r\n";
$entete .= "content-type: text/html; charset=iso-8859-1\r\n";
$entete .= "From: tutu.com\n";
if (@mail($email_webmaster, $subject, $message, $entete)){

etc...
?>

Eléphant du PHP | 82 Messages

10 déc. 2005, 22:38

Je sais pas si ca marchera mais essaye voir ca :
for($i=0;$i<$n1;$i++)
{
$nom_stag=mysql_result($rq1,$i,'Nom_stagiaire');
    $nom .= "<p><b>Nom: </b>{$nom_stag}</p>";
}

$message="<html><body><font face=arial size=2>".$nom."</font></body></html>";
Sébastien.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

11 déc. 2005, 00:41

Je sais pas si ca marchera mais essaye voir ca :
for($i=0;$i<$n1;$i++)
{
$nom_stag=mysql_result($rq1,$i,'Nom_stagiaire');
    $nom .= "<p><b>Nom: </b>{$nom_stag}</p>";
}

$message="<html><body><font face=arial size=2>".$nom."</font></body></html>";
sans oublier d'initialiser la variable $nom avant la boucle, puisqu'une concaténation est faite avec cette meme variable. Sans initialisation tu n'aura pas le résultat attendu puisque tu n'aura rien a concaténer la 1ere fois :wink:
$nom="";

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 81 Messages

11 déc. 2005, 10:04

Super, je vous remercie, ça marche !!!
Je vous avourai que je n'ai pas tout compris à la méthode, je vais regarder ça de plus près.

Merci encore.

Pierre

Eléphant du PHP | 82 Messages

11 déc. 2005, 11:30

Merci Truc pour la correction :oops:

Sinon Pierre pour la petite explication.

Quand tu fais :
$nom = "<p><b>Nom: </b>{$nom_stag}</p>";
$nom = "<p><b>Nom: </b>{$nom_stag}</p>";
$nom = "<p><b>Nom: </b>{$nom_stag}</p>";
Soit ce qui était fait dans ton premier for(), la variable sera réécrite et ne gardera que la valeur de la dernière ligne (ton problème).

Maintenant si tu fais ca :
$nom .= "<p><b>Nom: </b>{$nom_stag}</p>"; // nom1
$nom .= "<p><b>Nom: </b>{$nom_stag}</p>"; // nom2
$nom .= "<p><b>Nom: </b>{$nom_stag}</p>"; // nom3


Ca reviend à avoir ca :
$nom = "<p><b>Nom: </b>{$nom_stag}</p> // nom1
<p><b>Nom: </b>{$nom_stag}</p> // nom2
<p><b>Nom: </b>{$nom_stag}</p>"; // nom 3
Enfin bon je suis pas trop doué pour les explications mais j'avais un lien ou c'était expliqué clairement mais pas moyen de remettre la main dessus... :?
Sébastien.

Eléphant du PHP | 81 Messages

12 déc. 2005, 00:58

Merci Sébastien pour ton explication, si j'ai bien compris je récupère la concaténation de $nom.