2013-01-24 35 views
0

我有一个格式简单的证书。证书需要填入数据库中的值并通过电子邮件发送。下面是我做的快速修复。问题是发送的证书不是一个人而是那些被查询的人。电子邮件生成的HTML与动态值使用PHP

$query ="SELECT r.email, r.LastName, r.OpNo, 
r.QuizNo From tbl_cert where Pass =1 AND Printed is null; 
$result=mysql_query($query); 
while(($row= mysql_fetch_array($result))){ 
      $subject = "CPD Certificate"; 
    $email = $row['email']; 
    $LastName = $row['LastName']; 
    $OpNo = $row['OpNo']; 
    $TestNo = $row['QuizNo']; 

      $headers = "From: [email protected]"; 
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; 
       charset=iso-8859-1' . "\r\n"; 

      $mail_body ='<html>...Here its were my my 
      html comes with values from table...</html>'; 

      if (mail($to, $subject, $mail_body, $headers)){ 
      $query = "UPDATE `tbl_cert` SET Printed = 1 
       WHERE CertificateNo = " . $CertificateNo; 

      $certresult=mysql_query($query); 

      if ($certresult) { 

     header('Location:tsCertlist.php'); 
     } 

问题是如何让$ mail_body在while循环中同时具有html和php。我生成的表格或证书对于已通过且未打印证书的4位用户而言是相同的。

+0

'$ query'错误 – Sahal

回答

2

创建一个包含您的HTML,你要插入一个变量/取代的东西放在类似%REPLACE_FIRSTNAME%的地方单独的模板文件

然后使用str_replace()函数来更改替换为DB瓦尔/输入/任何变量与您需要的数据。

$mail_body = file_get_contents("templates/emailtemplate.htm"); 
$mail_body = str_replace("%REPLACE_FIRSTNAME%",value_from_DB,$template); 

排序,如果您想要更改布局,只需相应地编辑模板文件即可。

0
$certNo = 0; 
//get $certNo from data base 
$mail_body ='<html>'.$certNo.'</html>'; 
//send 
相关问题