使用PHPMailer发布数组

时间:2014-01-17 04:16:05

标签: php phpmailer

我在表单中创建了一个表,该表可动态生成名称基于位置ID的输入字段。现在我想将其发布到使用PHPMailer通过电子邮件发送信息的其他文件中。我从这里的其他帖子中学到了使用数组发布,例如name="name[]",但现在我仍然坚持如何将每个项目添加到PHPMailer电子邮件的正文中。

以下是我表格中的表格:

<table class="coach_log">

        <?php
        $query = "SELECT location_id FROM users WHERE id = " . $_SESSION['user_id'];

        $result = mysql_query($query, $connection);
            if (!result) {
                die("Database query failed: " . mysql_error());
            }

            while ($row = mysql_fetch_array($result)) {

                $location_id = $row["location_id"];

                $query = "SELECT first_name, last_name FROM users WHERE location_id = " . $location_id . " ORDER BY first_name";

                $result = mysql_query($query, $connection);
                    if (!result) {
                        die("Database query failed: " . mysql_error());
                    }

                    while ($row = mysql_fetch_array($result)) {
                            $name = $row['first_name'] . " " . $row['last_name'];

                            echo '  <tr>
                                    <td colspan="5" style="padding: 0; font-size: 20px; font-weight: 700;">' . $name . '</td>
                                    </tr>
                                    <input type="text" name="name[]" value="' . $name . '">';
                        }

            }
            ?>
</table>

以下是我生成电子邮件的单独文件如何处理它的示例:

$name = $_POST['name'];

$htmlBody = "
<table>
<tr>
        <td style=\"padding: 5px !important; text-align: left; line-height: 25px; font-family: sans-serif; font-size: 14px;\" bgcolor=\"#FFFFFF\">{$name}</td>
</tr>
</table>";

如何让$ htmlBody生成表单中创建的所有其他行?


使用foreach非常有效,但我在每个名称下都有多个输入需要像这样发送:

foreach ($names as $name) {
    $htmlBody .= "
<tr>
<td>{$name}</td>
<td>{$today_actual}</td>
<td>{$today_goal}</td>
<td>{$month_actual}</td>
</tr>

他们都属于一起。但如果我对每一个做一个单独的foreach,我会以错误的顺序获取信息。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

// Make sure we're dealing with an array of names
$names = is_array($_POST['name']) ? $_POST['name'] : array($_POST['name']);

$htmlBody = "..."; // Header HTML
foreach ($names as $name) {
    $htmlBody .= "<tr><td>$name</td></tr>";
}
$htmlBody .= "..."; // Footer HTML

答案 1 :(得分:0)

$names= array_values($_POST['name']);

foreach($names as $name) {
    $htmlBody= $htmlBody . $name;

}