2012-09-08 3 views
0

Salut Je veux envoyer des données en boucle avec la fonction php mail voici mon code:PHP envoyer un courrier électronique avec des données de boucle

foreach ($data['query'] as $row){ 
    echo $row->name; 
    echo "<br>"; 
    echo $row->time; 
    echo "<br>"; 
    echo $row->dosage; 
    echo "<br>"; 
    echo $row->frequency; 
    echo "<br>"; 
    echo $row->quantity; 
    echo "<br>"; 
} 

$to = "[email protected]"; 
$subject = "My subject"; 
$txt = "Hello world!"; 
$headers = "From: [email protected]"; 
mail($to,$subject,$txt,$headers); 

Quelqu'un peut-il me dire comment je peux attacher des données en boucle foreach pour envoyer corps de message, je veux dire Au lieu d'envoyer ce texte (Hello World!) dans le corps, je veux envoyer des données de boucle.

Répondre

1

concaténer les $txt:

$txt = ""; 
foreach ($data['query'] as $row){ 
    $txt .= $row->name; 
    $txt .= "<br>"; 
    $txt .= $row->time; 
    $txt .= "<br>"; 
    $txt .= $row->dosage; 
    $txt .= "<br>"; 
    $txt .= $row->frequency; 
    $txt .= "<br>"; 
    $txt .= $row->quantity; 
    $txt .= "<br>"; 
} 

$to = "[email protected]"; 
$subject = "My subject"; 
$headers = "From: [email protected]"; 
mail($to,$subject,$txt,$headers); 
+0

Un seul problème laissé que
ne fonctionne pas dans le courrier envoyé peut vous aider? –

+0

vous devez définir les en-têtes au format HTML ou ajouter '$ txt. =" \ N ";' au lieu de '
' –

1

Purement Concaténation comme ci-dessous:

$str = ''; 
    foreach ($data['query'] as $row){ 
     $str .= $row->name; 
     $str .= "<br>"; 
     $str .= $row->time; 
     $str .= "<br>"; 
     $str .= $row->dosage; 
     $str .= "<br>"; 
     $str .= $row->frequency; 
     $str .= "<br>"; 
     $str .= $row->quantity; 
     $str .= "<br>"; 
    } 

    $to = "[email protected]"; 
    $subject = "My subject"; 
    $headers = "From: [email protected]"; 
    mail($to,$subject,$str,$headers); 

    $str = ''; // empty the $str again 
0

Je pense que c'est ce que vous recherchez:

$to = "[email protected]"; 
    $subject = "My subject"; 
    $txt = "Hello world!"; 
    $headers = "From: [email protected]"; 

    foreach ($data['query'] as $row) { 
     $txt = $row->name; 
     $txt .= "<br>"; 
     $txt .= $row->time; 
     $txt .= "<br>"; 
     $txt .= $row->dosage; 
     $txt .= "<br>"; 
     $txt .= $row->frequency; 
     $txt .= "<br>"; 
     $txt .= $row->quantity; 
     $txt .= "<br>"; 

     mail($to, $subject, $txt, $headers); 
    } 

Cela envoie un courrier pour chaque boucle. Il n'est pas clair à partir de votre question si vous le souhaitez. Vous pouvez als collecter toutes les données, et l'envoyer 1 e-mail:

$to = "[email protected]"; 
$subject = "My subject"; 
$txt = ""; 
$headers = "From: [email protected]"; 

foreach ($data['query'] as $row) { 
    $txt .= $row->name; 
    $txt .= "<br>"; 
    $txt .= $row->time; 
    $txt .= "<br>"; 
    $txt .= $row->dosage; 
    $txt .= "<br>"; 
    $txt .= $row->frequency; 
    $txt .= "<br>"; 
    $txt .= $row->quantity; 
    $txt .= "-- end of row<br>"; 

} 

mail($to, $subject, $txt, $headers); 
0
<?php 
$dataArray = array('name','time','dosage','frequency','quantity'); 
$txt  = ''; 
foreach ($data['query'] as $row) 
{ 
    foreach($dataArray as $key=>$data) 
    { 
     $txt .= ($row->$data.'</br>'); 
    } 
} 

$to = "[email protected]"; 
$subject = "My subject"; 
$txt = "Hello world!"; 
$headers = "From: [email protected]"; 
mail($to,$subject,$txt,$headers); 

?> 
Questions connexes