PHP сгруппированные формы и некоторые из них имеют дополнительные данные - PullRequest
0 голосов
/ 30 июня 2010

Форма для отправки по электронной почте с флажками.

Некоторые флажки имеют дополнительное поле для ввода текста. Мне нравится "прочее и больше информации"

Как я могу прикрепить текст, введенный людьми, к этим флажкам этой опции.

Это одна группа.

<form action="sendemail.php" method="POST" name="Contact Form">
  <div><input type="checkbox" class="checkbox" name="check[]" value="Word of Mouth?">Word of Mouth?</div>
  <div><input type="checkbox" class="checkbox" name="check[]" value="Have you seen our Sign?  Where?">Have you seen our Sign? Where?<input type="text" style="float:right; width:150px;" name="sign" /></div>
  <div><input type="checkbox" class="checkbox" name="check[]" value="Other.">Other. <input type="text" style="float:right; width:300px;" name="other" /></div>
<p><input type="submit" value="Submit" name="submit"></p>

А мой sendmail.php похож на:

<?php
if(isset($_POST['submit'])) {

    $to = "myemail@mysite.com"; 
    $subject = "Contact Form";
    $firstname_field = $_POST['firstname'];
    $lastname_field = $_POST['lastname'];

    foreach($_POST['check'] as $value) {
        $check_msg_0 .= "  $value\n";
    }

    $body = "From: $firstname_field $lastname_field\n Learned about us from: \n $check_msg_0\n \n ";

    echo "Data has been submitted to $to!";
    mail($to, $subject, $body);

} else {
    echo "Nope didn't work!";
}
?>

ОБНОВЛЕНО - Попробовал рекомендацию, но не сработал. Я не могу получить значение и текстовое поле вместе.

Пробовал это, но все еще нет результатов.

<form action="sendemail.php" method="POST" name="Contact Form">
  <div><input type="checkbox" class="checkbox" name="check[]" value="Word of Mouth?">Word of Mouth?</div>
  <div><input type="checkbox" class="checkbox" name="check[]" value="Other.">Other. <input type="text" style="float:right; width:300px;" name="otherwhere" /></div>
<p><input type="submit" value="Submit" name="submit"></p>

if (count($_POST['check']) > 0) {
    foreach ($_POST['check'] as $value) {
        if (isset($_POST['check']) && $_POST['check'] == 'Other') {
            $check_msg_0 .= $value.": ".$_POST['otherwhere']."<br>";
        }
        else { 
            $check_msg_0 .= $value."<br>";
        }
     }
}

ОБНОВЛЕНИЕ 2 - Получил это, чтобы работать. Изменил имя моего текстового поля на «otherwhereTXT» и сделал следующее:

if (count($_POST['check']) > 0) {
     foreach ($_POST['check'] as $value) {
         if ($value == 'other') {
        $check_msg_0 .= "Other: ".$_POST['otherwhereTXT']."<br>";
         } else { 
        $check_msg_0 .= $value."<br>";
      }
    }
}

1 Ответ

0 голосов
/ 30 июня 2010

Вы бы использовали ...

$body = "From: $firstname_field $lastname_field\n Learned about us from: \n";

if (count($_POST['check'] > 0 {
    foreach ($_POST['check'] as $value) {
        $body .= $value."\n";
    }
}
if (strlen($_POST['other']) > 0) {
    $body .= "\n\nOther: ".$_POST['other'];
}

Это циклически просматривает каждое из ваших отмеченных значений (флажки отображаются только в $ _POST, если они были проверены) и добавляет их в сообщение тела.1004 *

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