2011-03-11 68 views
0

這是我嘗試在將「購物車」發送給管理員時嘗試使用的方法。這可能是一個非正統的方法,請任何建議都會比歡迎。在PHP郵件中包含一個數組的每個循環,如HTML表

此信息來自一個會議,加上一個單獨的腳本,它運行良好。它顯示了我,然後我試圖通過電子郵件發送,以及一些個人信息,購物車的內容:

<?php foreach ($quotes as $quote): ?> 
    <tr> 
    <td class="quoteTdL"><h3><?php echo htmlspecialchars($quote['name'], ENT_QUOTES,'UTF-8'); ?></h3></td> 
    <td class="quoteTdR"><p><?php echo htmlspecialchars($quote['text'], ENT_QUOTES,'UTF-8'); ?></p></td> 
    </tr> 
<?php endforeach; ?> 

基本上我想有這個信息在此砍伐郵件腳本:

//send email 
    $to = ""; 

    $fname = $_REQUEST['fname'] ; 
    $sname = $_REQUEST['sname'] ; 
    $email = $_REQUEST['email'] ; 
    $pnum = $_REQUEST['pnum'] ; 
    $mnum = $_REQUEST['mnum'] ; 
    $content = $_REQUEST['content'] ; 

    $subject = 'Email from SAiGE Longlife website'; 

    $msg = ' 
    <html> 
    <head> 
     <title>SAiGE Longlife Decking enquiry</title> 
    </head> 
    <body> 
     <table width="600" border="0" align="center" cellpadding="10"> 
     <tr> 
      <td colspan="2" align="center" bgcolor="#FF9933" style="font: 18px Arial,Georgia,Serif; color:#fff;">SAiGE Longlife Decking enquiry</td> 
     </tr> 
     <tr> 
      <td width="200" bgcolor="#CCCCCC" style="font: 18px Arial,Georgia,Serif; color:#fff;">Name:</td> 
      <td width="400" bgcolor="#FF9933" style="font: 18px Arial,Georgia,Serif; color:#000;">'; 
     $msg .=$fname; 
     $msg .='&nbsp;'; 
     $msg .=$sname; 
     $msg .=' 
      </td> 
     </tr> 
     <tr> 
      <td bgcolor="#CCCCCC" style="font: 18px Arial,Georgia,Serif; color:#fff;">E-mail</td> 
      <td bgcolor="#FF9933" style="font: 18px Arial,Georgia,Serif; color:#000;">'; 
     $msg .=$email; 
     $msg .=' 
      </td> 
     </tr> 
     <tr> 
      <td bgcolor="#CCCCCC" style="font: 18px Arial,Georgia,Serif; color:#fff;">Phone numbers:</td> 
      <td bgcolor="#FF9933" style="font: 18px Arial,Georgia,Serif; color:#000;">'; 
     $msg .=$pnum; 
     $msg .=' 
      </td> 
     </tr> 
     <tr> 
      <td bgcolor="#CCCCCC">&nbsp;</td> 
      <td bgcolor="#FF9933" style="font: 18px Arial,Georgia,Serif; color:#000;">'; 
     $msg .=$mnum; 
     $msg .=' 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2">&nbsp;</td> 
     </tr> 
     <tr> 
      <td colspan="2" bgcolor="#CCCCCC" style="font: 18px Arial,Georgia,Serif; color:#fff;">Message:</td> 
     </tr> 
     <tr> 
      <td colspan="2" bgcolor="#FF9933" style="font: 18px Arial,Georgia,Serif; color:#000;">'; 
     $msg .=$content; 
     $msg .=$cartHtml; 
     $msg .=' 

      </td> 
     </tr> 
     </table> 
    </body> 
    </html> 
    '; 

我已經嘗試過內爆和整合事情的邊緣,但沒有運氣,並花了很長時間!

是否有可能首先輸出循環作爲變量,然後包含或不必要?

所有幫助將不勝感激。

非常感謝,

湯姆

回答

1

對於愛情,也沒有錢,我不能讓ob_start解決工作輸出。在發佈這個問題之前,我嘗試了很多次。我能想象的是,發佈到另一個頁面會清除緩衝區,因此不會有數據被回顯?

這是我用於郵件的最終代碼。

消息: '; $ msg。= $ content;

foreach ($quotes as $quote): 

     $name = htmlspecialchars($quote['name'], ENT_QUOTES,'UTF-8'); 
     $text = htmlspecialchars($quote['text'], ENT_QUOTES,'UTF-8'); 

    $msg .= ' 
     <tr> 
      <td class="quoteTdL"><h3>'; 

    $msg .= $name; 

    $msg .= ' 
    </h3></td> 
      <td class="quoteTdR"><p>'; 

    $msg .=$text; 

    $msg .= '</p></td> 
     </tr>'; 

     endforeach; 
    $msg .=' 

     </td> 
    </tr> 

希望這有助於

湯姆

1

快速示例的固定。

foreach ($quotes as $quote): 

    $name = htmlspecialchars($quote['name'], ENT_QUOTES,'UTF-8'); 
    $text = htmlspecialchars($quote['text'], ENT_QUOTES,'UTF-8'); 

    $msg .= <<<EOS 
    <tr> 
    <td class="quoteTdL"><h3>{$name}</h3></td> 
    <td class="quoteTdR"><p>{$text}</p></td> 
    </tr> 
EOS; 
endforeach; 

// -- The output has now been added to $msg. 
+0

傑夫。非常感謝。我很確定我以前也嘗試過這種方法,但都無濟於事。爲了解決這個問題,我不得不將PHP中的HTML分成單獨的$ msg。's。我讚賞重新思考! – 2011-03-15 09:50:02

+0

我不明白爲什麼它不能正常工作,但只要你找到了解決方案,這一切都很好:P – 2011-03-15 13:31:55

0

是的,可以先輸出循環。你需要調用輸出緩衝功能:

ob_start(); 
echo "Some output here"; 
$out = ob_get_clean(); 

的$ out變量將包含你需要

相關問題