Как отправить данные по электронной почте из формы, построенной с помощью цикла while? - PullRequest
1 голос
/ 03 декабря 2010

В рамках проекта у меня есть форма, в которой наши клиенты могут редактировать список ключевых слов, над которыми мы работаем, как часть их 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 ]

1 голос
/ 03 декабря 2010

Я бы порекомендовал изменить код на это:

<?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>";
}
?>

Затем вы можете получить доступ ко всем ключевым словам в целевом файле php для вашей формы (после отправки), используя $_POST['keyword'], например,

foreach($_POST['keyword'] as $key => $value) {
      echo "Keyword #". $key." value: ". $value."<br />";
      // or your code to build your message
}
0 голосов
/ 03 декабря 2010

Сводка Брайана и Эрго верна, но если вы не хотите изменять код внутри цикла while, вы можете, в конце этого, вставить скрытый ввод, содержащий последнее значение $ counter.Затем в целевом php-файле (куда вы отправите письмо) вы можете загрузить поля POST (изменив то, что написал Стивен):

<?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.
?>
0 голосов
/ 03 декабря 2010

Чтобы использовать данные 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.
?>
0 голосов
/ 03 декабря 2010

Вместо того, чтобы называть входные данные, такие как «ключевое слово1», «ключевое слово2» и т. Д., Просто назовите их все «ключевое слово []». Когда форма отправлена, PHP объединит их все в массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...