@Oleg5Dracula
JustGvozdik

Отправка выбранных чекбоксов на email через PHP-обработчик — как сделать?

Привет
Есть форма на HTML
<form action="form.php" method="post">
   <div class="cell">
      <p><a href="1.html">Книга первая</a></p>
      <p>Автор</p>
      <p>Цена</p>
      <input type="checkbox" name="choice[]" value="Книга первая">Выбрать
   </div>
   <div class="cell">
      <p><a href="2.html">Книга вторая</a></p>
      <p>Автор</p>
      <p>Цена</p>
      <input type="checkbox" name="choice[]" value="Книга вторая">Выбрать
   </div><div class="cell">
      <p><a href="3.html">Книга третья</a></p>
      <p>Автор</p>
      <p>Цена</p>
      <input type="checkbox" name="choice[]" value="Книга третья">Выбрать
   </div><div class="cell">
      <p><a href="4.html">Книга четвертая</a></p>
      <p>Автор</p>
      <p>Цена</p>
      <input type="checkbox" name="choice[]" value="Книга четвертая">Выбрать
   </div>
   <div id="form">
      <textarea rows="12" cols="28" name="things"></textarea>
      <input type="submit" name="submit" value="Готово">
   </div>
</form>

и есть обработчик на PHP
<?php
echo '<!doctype html>';
echo '<html>';
echo '<head>';
echo '<meta charset="utf-8">';
echo '<title>Книги</title>';
echo '</head>';
echo '<body>';
if(isset($_POST['submit'])) {
    if(empty($_POST['choice'])) {
        echo("<p>Вы ничего не выбрали.</p>");
    } else {
        echo "<p>Вы выбрали следующие книги:</p>";
        for($i=0; $i < count($_POST['choice']); $i++) {
            echo $_POST['choice'][$i]."<br/>";
        }
        if(isset($_POST['things'])) {
            if(empty($_POST['things'])) {
                echo '<hr>';
                echo '<p>Готово</p>';
                echo '<p style="font-size: 17px;"><a href="index.html" style="text-decoration: underline;" title="Вернуться на главную">Вернуться на главную</a></p>';
            } else {
                echo "<hr><p>Вы ввели:</p>";
                echo $_POST['things'];
                echo '<hr>';
                echo '<p>Готово</p>';
                echo '<p style="font-size: 17px;"><a href="index.html" style="text-decoration: underline;" title="Вернуться на главную">Вернуться на главную</a></p>';
            }
        }                   
    }
}
echo '</body>';
echo '</html>';
 
$whatChoose = $_POST['choice'];
$whatWrite = $_POST['things'];
$toEmail = "oleg5dracula@gmail.com";
$subject = "Выбор сделан";
$check = "";
if(!empty($_POST["choice"]) && is_array($_POST["choice"])) {
    $check = implode(" ", $_POST['choice']);
}
$messageOK = "Выбор: ".$whatChoose.$check."<br>Текст: ".$whatWrite;
mail ($toEmail, $subject, $messageOK);
?>


На email приходят письма с этого обработчика. Но там только отображает, что пользователь ввёл в обычном поле (textarea), а выбранные чекбоксы (то есть книги) - нет.

Пожалуйста, как сделать так, чтобы обработчик отправлял еще и данные с чекбоксов, через запятую?

Спасибо

UPD: Yastr, не помогло. Всё равно та же муть. Вместо значений чекбоксов пишет просто массив (словом)
  • Вопрос задан
  • 3910 просмотров
Решения вопроса 1
Yastr
@Yastr
$chosen = is_array($_POST['choice']) ? $_POST['choice'] : array();
		$chosen = implode (', ', $chosen );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы