PHP和HTML电子邮件语法帮助


Assistance with PHP and HTML Email syntax

我认为我在这里要做的事情显而易见。

$message是来自wp_mail()的消息参数。

我需要这个foreach循环在我的电子邮件中运行,以从表单中获取所有动态值

   $tmp = '';
    $i = 0;      
        foreach( $_POST as $key => $value)  {
            if( substr( $key, 0, 14) == 'course-select-')   {
                $tmp = '<tr><td>Day number' . $i . ' :</td><td> ' . $value . '</td></tr>';
            }
        $i++;
    };

   //construct the email
    $message = '
    <html>
    <head>
      <title>Booking Confirmation Part 2</title>
    </head>
    <body>
      <h2>Booking Confirmation Part 2 : ' . $golfersname . '</h2>
      <table width="500">
        <tr>
          <td>Accomodation</td>
          <td>' . $accomodation . '</td>
        </tr>
        <tr>
          <td>Singles</td>
          <td>' . $singles . '</td>
        </tr>
        <tr>
          <td>Doubles</td>
          <td>' . $doubles . '</td>
        </tr>
        <tr>
          <td>Car Type</td>
          <td>' . $cartype . '</td>
        </tr>   
        <tr>
          <td>Course Details</td>
        </tr>       
        ' . $tmp . '
      </table>
    </body>
    </html>
    '; 

一切都会从它击中'. $i = 0;的那一刻开始破裂。我错过了什么真正愚蠢的事情?

foreach确实可以工作,因为我已经在控制台中测试过了。

感谢

"."用于在PHP中构建字符串。似乎您正试图在字符串执行到一半时执行代码(即循环和$i的赋值)。这根本没有道理。

最好的方法是:

$message = "<HTML>....Course details";
$i = 0;     
foreach( $_POST as $key => $value)
{
  if( substr( $key, 0, 14) == 'course-select-')
  {
       $message=$message.'Day number' . $i . ' : ' . $value;
  }
  $i++;
}
$message=$message."</TD>...</HTML>";

然后完成你的电子邮件脚本。

编辑

是的,你现在已经解决了第一个问题。它只显示第一个结果的原因是,您正在循环中重新分配$tmp。见下文:

$tmp = '<tr><td>...'

应该是

$tmp = $tmp.'<tr><td>...'

在php中,您可以组合赋值运算符(http://php.net/manual/en/language.operators.assignment.php)

在这种情况下,你可以合并。和=制造。=

当你循环你的前臂改变

$tmp = '<tr><td>Day number'.....

$tmp .= '<tr><td>Day number' ....

这将把每个新循环上的字符串添加到字符串中。

这样使用:

$tmp = '';
$i = 0;      
    foreach( $_POST as $key => $value)  {
        if( substr( $key, 0, 14) == 'course-select-')   {
            $tmp.= '<tr><td>Day number' . $i . ' :</td><td> ' . $value . '</td></tr>';
        }
    $i++;
};