@Qleager

Как отправить отмеченные чекбоксы формы?

Использую это руководство для отправки форм: https://habrahabr.ru/sandbox/93363/

Появилась необходимость в отправке пары полей и несколько отмеченных чекбоксов; помоготи реализовать на этом примере.

index.php
<form class="row checkbox-form">
      <div class="col-md-6 landing box">
        <h3>landing page</h3>
        <input type="hidden" value="Форма с Чекбоксами">
        <label for="land-1"><input type="checkbox" id="land-1" class="checkbox" name="check[]" value="10000" checked><p>Разработка страницы</p></label>
        <label for="land-2"><input type="checkbox" id="land-2" class="checkbox" name="check[]" value="10000"><p>Мультилендинг</p></label>
        <label for="land-3"><input type="checkbox" id="land-3" class="checkbox" name="check[]" value="10000"><p>Мобильная версия сайта</p></label>
        <label for="land-4"><input type="checkbox" id="land-4" class="checkbox" name="check[]" value="10000"><p>Интеграция с CRM системой</p></label>
        <label for="land-5"><input type="checkbox" id="land-5" class="checkbox" name="check[]" value="10000"><p>A/B тестирование</p></label>
        <label for="land-6"><input type="checkbox" id="land-6" class="checkbox" name="check[]" value="10000"><p>Копирайтинг</p></label>
      </div>
      <div class="col-md-6 form-box">
        <div class="text-center form">
          <h3>оставьте заявку</h3>
          <input id="name" type="text" name="name" required>
          <label for="name">Ваше имя</label>
          <input type="text" class="telinput" name="tel" id="tel" required>
          <label for="tel">Ваш телефон</label>  
          <h3 class="light">итоговая стоимость</h3>
          <span class="summary">10 000 р</span>
          <button type="submit" class="main-button">отправить заявку</button>
          </div>
      </div>
      <div class="col-md-6 box attraction">
        <h3>привлечение клиентов</h3>
        <label for="clients-1"><input type="checkbox" id="clients-1" class="checkbox"  name="check[]" value="10000"><p>Яндека.директ</p></label>
        <label for="clients-2"><input type="checkbox" id="clients-2" class="checkbox" name="check[]" value="10000"><p>Google Adwords</p></label>
        <label for="clients-3"><input type="checkbox" id="clients-3" class="checkbox"  name="check[]" value="10000"><p>Таргетированная реклама</p></label>
        <label for="clients-4"><input type="checkbox" id="clients-4" class="checkbox" name="check[]" value="10000"><p>E-mail маркетинг</p></label>
      </div>
    </form>


functions.php
if((isset($_POST['title'])&&$_POST['title']!="")&&(isset($_POST['name'])&&$_POST['name']!="")&&(isset($_POST['tel'])&&$_POST['tel']!="")&&(isset($_POST['check'])&&$_POST['check']!="")){
        $to = 'mail@gmail.com';
        $subject = 'Форма обратной связи';
        $message = '
                <html>
                    <head>
                        <title>'.$subject.'</title>
                    </head>
                    <body>
                        <p>'.$_POST['title'].'</p>
                        <hr>
                        <p>Имя: '.$_POST['name'].'</p>
                        <p>Телефон: '.$_POST['tel'].'</p>  
                        <hr>
                        <p>Выбрано: '.$_POST['check'].'</p>                
                    </body>
                </html>';
        $headers  = "Content-type: text/html; charset=utf-8 \r\n";
        $headers .= "From: От кого отправлено <from@example.com>\r\n";
        mail($to, $subject, $message, $headers);
}


scripts.js
$(document).ready(function(){
  $(".form, .checkbox-form").submit(function() { 
    var form_data = $(this).serialize();
    $.ajax({
    type: "POST",
    url: "functions.php",
    data: form_data,
    success: function() {
            alert("Успешно! Ваша заявка отправлена!");}
    });
  });
});
  • Вопрос задан
  • 1153 просмотра
Решения вопроса 1
RozMakc
@RozMakc
if($_POST['check'] == true){
                $check = 'чекбокс включен';
            }

только у Вас там name массивом передается, что странно так как смысл то у чекбоксов разный, если это принципиально, то надо перебрать массив check и внутри проверить.
я бы присвоил каждому свой нейм и проверял уже, всё зависит от ситуации.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Shadowbearer
У чекбоксов должны быть или разные name, или разные value. Если с одинаковым name сделать, то будет возвращать массив из отмеченных элементов, и в php-скрипте будет кривой вывод, будет выводить всегда "Выбрано: Array". Надо массив предварительно обрабатывать.

А вообще, есть подозрение, что тут нужны не чекбоксы, а radiobutton.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы