2017-01-30 7 views
0

email-template.phpファイルを送信するとき、以下のコードは正しく動作します。私は今、SQLのクエリの結果をテーブルの電子メールテンプレートに含めたいと思っています。基本的に引用符のリストです。私は感じているstr_replaceは行く方法ですが、完全な初心者である、私はこれを行う方法がわかりません。電子メールテンプレートにSQLクエリ結果を追加します

メール-template.phpで
<?php 
     include('connect.php'); 
     include('functions.php'); 


    $sql = "SELECT Quote FROM daily_quote Order By rand() Limit 0,10"; 
    $result = $conn->query($sql); 



    $to = '[email protected]'; 
    $subject = "Test"; 

    $htmlContent = file_get_contents("email-template.php"); 

    $headers = "MIME-Version: 1.0" . "\r\n"; 
    $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; 

    // Additional headers 
    $headers .= 'From: [email protected]' . "\r\n"; 


    // Send email 
    if(mail($to,$subject,$htmlContent,$headers)): 
     $successMsg = 'Email has sent successfully.'; 
    else: 
     $errorMsg = 'Email sending fail.'; 
    endif; 
    include('footer.php'); 
+0

を編集あなたが入る避ける必要がありますスローアウェイSQL文字列を宣言し、その代わりに 'query(...)'呼び出しの中に直接クエリを置く習慣です。これにより誤って間違ったクエリを実行したときの間違いが回避されます。同様に 'if(...):'スタイルは[代替構文](http://php.net/manual/en/control-structures.alternative-syntax.php)であり、実際には奨励されていません。 – tadman

+0

その単純なタスクのために 'str_replace()'に間違いはありません。テンプレート内のプレースホルダを定義し、HTMLテーブルを含む生成された文字列で置き換えます。より複雑なテンプレートの場合(またはデータ処理とプレゼンテーションを分けたい場合)、スマート、小枝などのテンプレートエンジンを使用することを検討することができます。 –

答えて

0

追加します。このように {place_holder}

編集スクリプトを:

$sql = "SELECT Quote FROM daily_quote Order By rand() Limit 0,10"; 
$result = $conn->query($sql); 
$template = "<table>"; 
while($row = $result->fetch_assoc()) { 
    $template .= "<tr><td>".$row['Quote']."</td></tr>"; 
$template .= "</table>"; 

if(mail($to,$subject,str_replace("{place_holder}",$template,$htmlContent),$headers)): 
+0

PHPは結果のHTMLではなく電子メールでテストとして表示されます。結果を正しく表示するにはどうすればよいですか? – Teege

+0

私の英語を許して、私に例を教えてもらえますか?ありがとう、これは実際の電子メールからコピーされた出力です:echo " "; –

+0

while($ row = $ result-> fetch_assoc()){echo " "。$ row ['Quote']。 " ";エコー " "; – Teege

関連する問題