php mail с переменными - PullRequest
0 голосов
/ 21 июля 2011

Я пытаюсь настроить почтовый скрипт, который сначала запустит простой выбор из mysql, и использует эти переменные массива в сообщении.Однако все переменные не выводятся в тело сообщения, только одна строка переменных.Вот мой сценарий:

    $sql1 = "SELECT * FROM videos WHERE checked_out = '1'"; 
    $result1 = $dbLink->query($sql1); 
              while($row1 = $result1->fetch_assoc()) {
    $name = $row1['name'];
    $tape_no = $row1['tape_no'];
    $member_name = $row1['member_name'];
    $date_out = date("F j, Y", strtotime($row1['date_out']));
              }

//email function to administrator
$to = "nouser@mail.com";
$subject = "Daily Video Rental Summary";
$message = "$name $tape_no $date_out $member_name
======================================================================
PLEASE DO NOT REPLY TO THIS MESSAGE, AS THIS MAILBOX IS NOT MONITORED
======================================================================";
$from = "no_replies_please@mail.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);

ценим любые идеи, которыми кто-либо хочет поделиться, об этом.Спасибо, - Matt

Ответы [ 5 ]

2 голосов
/ 21 июля 2011

Попробуйте вместо этого:

 $sql1 = "SELECT * FROM videos WHERE checked_out = '1'";
 $result1 = $dbLink - > query($sql1);
 while ($row1 = $result1 - > fetch_assoc()) {
     $name = $row1['name'];
     $tape_no = $row1['tape_no'];
     $member_name = $row1['member_name'];
     $date_out = date("F j, Y", strtotime($row1['date_out']));
     //email function to administrator
     $to = "nouser@mail.com";
     $subject = "Daily Video Rental Summary";
     $message = "$name $tape_no $date_out $member_name
======================================================================
PLEASE DO NOT REPLY TO THIS MESSAGE, AS THIS MAILBOX IS NOT MONITORED
======================================================================";
     $from = "no_replies_please@mail.com";
     $headers = "From:".$from;
     mail($to, $subject, $message, $headers);
 }

Это будет делать почту на строку.

1 голос
/ 21 июля 2011

это потому, что вы все время перезаписываете переменные, поэтому вы получите только последнююВы можете просто создать переменную $message в цикле while.который отправит 1 электронное письмо со всем

 $sql1 = "SELECT * FROM videos WHERE checked_out = '1'"; 
    $result1 = $dbLink->query($sql1); 
              while($row1 = $result1->fetch_assoc()) {
    $name = $row1['name'];
    $tape_no = $row1['tape_no'];
    $member_name = $row1['member_name'];
    $date_out = date("F j, Y", strtotime($row1['date_out']));
    $message .= "$name $tape_no $date_out $member_name"
              }

//email function to administrator
$to = "nouser@mail.com";
$subject = "Daily Video Rental Summary";
======================================================================
PLEASE DO NOT REPLY TO THIS MESSAGE, AS THIS MAILBOX IS NOT MONITORED
======================================================================";
$from = "no_replies_please@mail.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
0 голосов
/ 21 июля 2011

Попробуйте это:

 $message = NULL; 
$sql1 = "SELECT * FROM videos WHERE checked_out = '1'"; 
$result1 = $dbLink->query($sql1); 
while($row1 = $result1->fetch_assoc()) { 
$name = $row1['name']; 
$tape_no = $row1['tape_no']; 
$member_name = $row1['member_name']; 
$date_out = date("F j, Y", strtotime($row1['date_out']));
 $message .= "$name $tape_no $date_out $member_name" } 

И удалите другую переменную $ message из цикла.Обратите внимание.перед = в сообщении $.Это говорит php постоянно добавлять к $ message

0 голосов
/ 21 июля 2011

Это потому, что вы присваиваете переменные в цикле, но используете их в переменной $ message вне цикла.Таким образом, ваше сообщение $ содержит только элементы из последней строки / записи.Попробуйте переместить и добавить значения в переменную $ message внутри цикла while.

Так что это может быть

while($row1 = $result1->fetch_assoc()) {
    //assign vars here
    $message .= "$name $tape_no $date_out $member_name\n";
}
$message = "$message
======================================================================
PLEASE DO NOT REPLY TO THIS MESSAGE, AS THIS MAILBOX IS NOT MONITORED
======================================================================";

//assign other variables
//mail()

Надеюсь, это поможет.

0 голосов
/ 21 июля 2011

Вы перезаписываете свои переменные в цикле, чтобы $name и т. Д. Содержали значения, найденные в последней строке после цикла.

Что вы могли бы сделать, это построить ваше сообщение в цикле:

$message = '';
while($row1 = $result1->fetch_assoc()) {
    $message .= $row1[...];    // whatever you need
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...