0

私はフォーマットの単純な証明書を持っています。証明書には、データベースからの値を入力して電子メールで送信する必要があります。以下は私が行ったクイックフィックスです。問題は、送信された証明書が、照会されたものではなく1人のものではないことです。

$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: online@example.com";
    $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人のユーザーと同じでした。

4

2 に答える 2

2

HTMLと変数を挿入したい場所を含む別のテンプレートファイルを作成します/%REPLACE_FIRSTNAME%のようなものに入れられたものを置き換えます

次に、str_replace()を使用して、必要なデータを含むdb / input/whatever変数で置換変数を変更します。

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

並べ替えて、レイアウトを変更したい場合は、それに応じてテンプレートファイルを編集してください。

于 2013-01-24T13:47:42.637 に答える
0
$certNo = 0;
//get $certNo from data base
$mail_body ='<html>'.$certNo.'</html>';
//send
于 2013-01-24T13:55:33.120 に答える