如何通过使用while循环构建的表单发送电子邮件数据?

时间:2010-12-03 13:50:38

标签: php email while-loop

作为项目的一部分,我有一个表单,我们的客户可以在其中编辑我们在其中工作的关键字列表作为其SEO的一部分。

这是我用来在我们的数据库中显示我们为他们提供的关键字的代码

<?php
$c = true;
while($row = mysql_fetch_array($result))
{
  $counter++;
  echo "<div" .(($c = !$c)?' class="right"':'') . ">";
  echo "<label for='keyword". $counter ."'>",
       "<strong>Keyword " . $counter . " </strong></label>";
  echo "<input type='text' name='keyword". $counter .
       "' id='keyword". $counter ."' value='". $row['keyword'] . "' />";
  echo "</div>";
}
?>

我不知道做什么是在将表单提交到电子邮件时收集数据。 我已准备好PHP邮件位,但在这方面苦苦挣扎。

有任何帮助吗?

4 个答案:

答案 0 :(得分:1)

我建议将代码更改为:

<?php
$c = true;
while($row = mysql_fetch_array($result))
{
  $counter++;
  echo "<div" .(($c = !$c)?' class="right"':'') . ">";
  echo "<label for='keyword". $counter ."'>",
       "<strong>Keyword " . $counter . " </strong></label>";
  echo "<input type='text' name='keyword[]' id='keyword". $counter ."' value='". $row['keyword'] . "' />";
  echo "</div>";
}
?>

然后,您可以使用$_POST['keyword']访问表单的目标php文件中的所有关键字(提交后),例如

foreach($_POST['keyword'] as $key => $value) {
      echo "Keyword #". $key." value: ". $value."<br />";
      // or your code to build your message
}

答案 1 :(得分:0)

不要命名“keyword1”,“keyword2”等输入,只需将它们全部命名为“keyword []”即可。提交表单时,PHP会将它们全部聚合到一个数组中。

答案 2 :(得分:0)

要使用POST数据(确保您的表单使用POST):

<?php
    $message = '<ol>';
    foreach($_POST as $key => $post) {
        $message .= "<li><strong>Keyword " . $key . ":</strong>";
        $message .= " <span>" . $post . "</span>";
        $message .= "</li>";
    }
    $message .= '</ol>';

    // mail the message here.
?>

答案 3 :(得分:0)

Brian和Ergo摘要是正确的,但是如果你不想修改while循环中的代码,你可以在最后插入一个保存最后$ counter值的隐藏输入。然后在目标php文件中(您将发送电子邮件),您可以加载POST字段(修改Stephen写的内容):

<?php
$counter = (int)$_POST['counter'];
$message = '';
for($i = 1; $i <= $counter; $i++){
    $key = $_POST['keyword'.$i];
    $message .= "<p>";
    $message .= "<strong>Keyword " . $key . " </strong></label>";
    $message .= "<span> " . $post . "</span>";
    $message .= "</p>";
}

// mail message here.
?>