Как отправить на почту сумму и значения из input полей не формы?

Alexeina66

Мой дом здесь!
Регистрация
26 Авг 2013
Сообщения
403
Реакции
430
Добрый день!
Есть калькулятор расчета стоимости.
Необходимо отправить на почту значения из полей радио, чекбоксов и итоговую сумму.
HTML калькулятора
HTML:
<div id="calclp">
<!--Радио поля-->
<input type="radio" id="r1" name="rr" checked="checked" value="Радио1" title="1500"><label for="r1"><span></span>Радио1</label>
<input type="radio" id="r2" name="rr" checked="checked" value="Радио2" title="1000"><label for="r1"><span></span>Радио1</label>
<!--Чекбокс поля-->
<input type="checkbox" id="dop1" name="dop1" value="Чекбокс1" title="200"><label for="dop1"><span></span>Чекбокс1</label>
<input type="checkbox" id="dop2" name="dop2" value="Чекбокс2" title="200"><label for="dop1"><span></span>Чекбокс2</label>
<!--Сумма-->
<div class="calcpriceitog">Цена: <span class="lpprice">4600</span> руб.</div>
</div>

JS калькулятора
Код:
var checkboxlp = $("#calclp input");
function calculatecost(path) {
  var     type_m = $(path).val(),
    type_p = $(path).attr("title"),
    price = 0;
  $('.hideinfo1').text('');
        checkboxlp.each(function(){
            if ($(this).is(":checked")){
                price = parseFloat(price) + parseFloat($(this).attr("title"));
    $('.lpprice').text(price);
    $('.hideinfo1').append($(this).val(), " - ", $(this).attr("title"), "\n");
    $('.hideinfo2').val(price);
            }
        });
}

$('#calclp input').change(function() {
      calculatecost(this);
})

calculatecost();
Форма отправки
HTML:
<form action="mail.php" method="post">
                            <div class="input-block"><div class="input-img input-img1"></div><input name="name" class="required" type="text" placeholder="Введите Ваше имя"></div>
            <div class="input-block"><div class="input-img input-img2"></div><input name="phone" class="phoneform required" type="text" placeholder="Введите Ваш телефон"></div>
            <button class="btn btn-transparent">Отправить</button>
          <p class="msgs"></p>
        </form>

Обработчик
PHP:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (!empty($_POST['name']) && !empty($_POST['phone'])){
      if (isset($_POST['name'])) {
          if (!empty($_POST['name'])){
          $uname = strip_tags($_POST['name']) . "<br>";
          $unameFieldset = "<b>Имя:</b>";
         }
    }
    if (isset($_POST['phone'])) {
        if (!empty($_POST['phone'])){
          $uphone = strip_tags($_POST['phone']) . "<br>";
          $uphoneFieldset = "<b>Телефон:</b>";
        }
    }
   
    if (isset($_POST['question'])) {
        if (!empty($_POST['question'])){
          $mymessage = strip_tags($_POST['question']) . "<br>";
          $mymessageFieldset = "<b>Сообщение:</b>";
        }
    }
   

    $to = "1@mail.ru";
    $sendfrom = "1@mail.ru";
    $headers  = "From: " . strip_tags($sendfrom) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    $headers .= "Content-Transfer-Encoding: 8bit \r\n";
    $subject = "Письмо с сайта";
    $message = "$unameFieldset $uname
                $uphoneFieldset $uphone
                $sumFieldset $total
                $mymessageFieldset $mymessage
                $formInfoFieldset $formInfo";

    $send = mail ($to, $subject, $message, $headers);
        if ($send == 'true') {
            echo '<p class="success">Спасибо за отправку вашего сообщения!</p>';
        } else {
          echo '<p class="fail"><b>Ошибка. Сообщение не отправлено!</b></p>';
        }
  } else {
      echo '<p class="fail">Ошибка. Вы заполнили не все обязательные поля!</p>';
  }
} else {

}

Благодарю за помощь!
 

giorno

Постоялец
Регистрация
18 Сен 2017
Сообщения
185
Реакции
110
Добрый день!
Есть калькулятор расчета стоимости.
Необходимо отправить на почту значения из полей радио, чекбоксов и итоговую сумму.
HTML калькулятора
HTML:
<div id="calclp">
<!--Радио поля-->
<input type="radio" id="r1" name="rr" checked="checked" value="Радио1" title="1500"><label for="r1"><span></span>Радио1</label>
<input type="radio" id="r2" name="rr" checked="checked" value="Радио2" title="1000"><label for="r1"><span></span>Радио1</label>
<!--Чекбокс поля-->
<input type="checkbox" id="dop1" name="dop1" value="Чекбокс1" title="200"><label for="dop1"><span></span>Чекбокс1</label>
<input type="checkbox" id="dop2" name="dop2" value="Чекбокс2" title="200"><label for="dop1"><span></span>Чекбокс2</label>
<!--Сумма-->
<div class="calcpriceitog">Цена: <span class="lpprice">4600</span> руб.</div>
</div>

JS калькулятора
Код:
var checkboxlp = $("#calclp input");
function calculatecost(path) {
  var     type_m = $(path).val(),
    type_p = $(path).attr("title"),
    price = 0;
  $('.hideinfo1').text('');
        checkboxlp.each(function(){
            if ($(this).is(":checked")){
                price = parseFloat(price) + parseFloat($(this).attr("title"));
    $('.lpprice').text(price);
    $('.hideinfo1').append($(this).val(), " - ", $(this).attr("title"), "\n");
    $('.hideinfo2').val(price);
            }
        });
}

$('#calclp input').change(function() {
      calculatecost(this);
})

calculatecost();
Форма отправки
HTML:
<form action="mail.php" method="post">
                            <div class="input-block"><div class="input-img input-img1"></div><input name="name" class="required" type="text" placeholder="Введите Ваше имя"></div>
            <div class="input-block"><div class="input-img input-img2"></div><input name="phone" class="phoneform required" type="text" placeholder="Введите Ваш телефон"></div>
            <button class="btn btn-transparent">Отправить</button>
          <p class="msgs"></p>
        </form>

Обработчик
PHP:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (!empty($_POST['name']) && !empty($_POST['phone'])){
      if (isset($_POST['name'])) {
          if (!empty($_POST['name'])){
          $uname = strip_tags($_POST['name']) . "<br>";
          $unameFieldset = "<b>Имя:</b>";
         }
    }
    if (isset($_POST['phone'])) {
        if (!empty($_POST['phone'])){
          $uphone = strip_tags($_POST['phone']) . "<br>";
          $uphoneFieldset = "<b>Телефон:</b>";
        }
    }
 
    if (isset($_POST['question'])) {
        if (!empty($_POST['question'])){
          $mymessage = strip_tags($_POST['question']) . "<br>";
          $mymessageFieldset = "<b>Сообщение:</b>";
        }
    }
 

    $to = "1@mail.ru";
    $sendfrom = "1@mail.ru";
    $headers  = "From: " . strip_tags($sendfrom) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    $headers .= "Content-Transfer-Encoding: 8bit \r\n";
    $subject = "Письмо с сайта";
    $message = "$unameFieldset $uname
                $uphoneFieldset $uphone
                $sumFieldset $total
                $mymessageFieldset $mymessage
                $formInfoFieldset $formInfo";

    $send = mail ($to, $subject, $message, $headers);
        if ($send == 'true') {
            echo '<p class="success">Спасибо за отправку вашего сообщения!</p>';
        } else {
          echo '<p class="fail"><b>Ошибка. Сообщение не отправлено!</b></p>';
        }
  } else {
      echo '<p class="fail">Ошибка. Вы заполнили не все обязательные поля!</p>';
  }
} else {

}

Благодарю за помощь!
а почему поля калькулятора отдельно от формы?
 

Alexeina66

Мой дом здесь!
Регистрация
26 Авг 2013
Сообщения
403
Реакции
430
а почему поля калькулятора отдельно от формы?
Сама форма реализуется во всплывающем окне при нажатии на кнопку
Код:
<a href="#calc-form" class="btn" data-sr='over 0.8s'>
              Отправить
            </a>
 

giorno

Постоялец
Регистрация
18 Сен 2017
Сообщения
185
Реакции
110
Код:
<form id="calclp">
<!--Радио поля-->
<input type="radio" id="r1" name="rr" checked="checked" value="Радио1" title="1500"><label for="r1"><span></span>Радио1</label>
<input type="radio" id="r2" name="rr" value="Радио2" title="1000"><label for="r1"><span></span>Радио1</label>
<!--Чекбокс поля-->
<input type="checkbox" id="dop1" name="dop1" value="Чекбокс1" title="200"><label for="dop1"><span></span>Чекбокс1</label>
<input type="checkbox" id="dop2" name="dop2" value="Чекбокс2" title="200"><label for="dop1"><span></span>Чекбокс2</label>
<!--Сумма-->
<input type="hidden" name="calcpriceitog" value="4600">
<div class="calcpriceitog">Цена: <span class="lpprice">4600</span> руб.</div>
</form>

<form id="form-calc" action="mail.php" method="post">
   <div class="input-block">
       <div class="input-img input-img1">
          
       </div>
       <input name="name" class="required" type="text" placeholder="Введите Ваше имя"></div>
        <div class="input-block">
            <div class="input-img input-img2"></div>
            <input name="phone" class="phoneform required" type="text" placeholder="Введите Ваш телефон">
        </div>
        <button class="btn btn-transparent">Отправить</button>
         <div class="msgs"></div>
</form>


<script type="text/javascript">
    var checkboxlp = $("#calclp input");
function calculatecost(path) {
  var     type_m = $(path).val(),
    type_p = $(path).attr("title"),
    price = 0;
  $('.hideinfo1').text('');
        checkboxlp.each(function(){
            if ($(this).is(":checked")){
                price = parseFloat(price) + parseFloat($(this).attr("title"));
    $('.lpprice').text(price);
    $('[name="calcpriceitog"]').val(price);
    $('.hideinfo1').append($(this).val(), " - ", $(this).attr("title"), "\n");
    $('.hideinfo2').val(price);
            }
        });
}

$('#calclp input').change(function() {
      calculatecost(this);
})

calculatecost();

$('#form-calc').submit(function(event) {
    event.preventDefault();
$.ajax({
    url: 'mail.php',
    type: 'POST',
    //dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)',
    data: $('#form-calc,#calclp').serialize(),
})
.done(function(response) {
    $('#form-calc .msgs').html(response);
    console.log("success");
})
.fail(function() {
    console.log("error");
})
.always(function() {
    console.log("complete");
});

});

</script>

mail.php

Код:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (!empty($_POST['name']) && !empty($_POST['phone'])){
   $message_form = '';
   if (isset($_POST['name'])) {
    if (!empty($_POST['name'])){
     $message_form .= "<b>Имя:</b>";
     $message_form .= strip_tags($_POST['name']) . "<br>";

   }
}
if (isset($_POST['phone'])) {
  if (!empty($_POST['phone'])){
    $message_form .= "<b>Телефон:</b>";
    $message_form .= strip_tags($_POST['phone']) . "<br>";

  }
}
if (isset($_POST['question'])) {
  if (!empty($_POST['question'])){
   $message_form .= "<b>Сообщение:</b>";
   $message_form .= strip_tags($_POST['question']) . "<br>";

}
}

if (isset($_POST['calcpriceitog'])) {
  if (!empty($_POST['calcpriceitog'])){
    $message_form .= "<b>Итог:</b>" ;
    $message_form .= strip_tags($_POST['calcpriceitog']) . "<br>";

  }
}

if (isset($_POST['rr'])) {
  if (!empty($_POST['rr'])){
   $message_form .= "<b>Радио поле 1:</b>";
   $message_form .= strip_tags($_POST['rr']) . "<br>";

}
}

if (isset($_POST['dop1'])) {
  if (!empty($_POST['dop1'])){
    $message_form .= "<b>Чекбокс поле 1:</b>";
    $message_form .= strip_tags($_POST['dop1']) . "<br>";

  }
}
if (isset($_POST['dop2'])) {
  if (!empty($_POST['dop2'])){
    $message_form .= "<b>Чекбокс поле 2:</b>";
    $message_form .= strip_tags($_POST['dop2']) . "<br>";

  }
}

$to = "1@mail.ru";
$sendfrom = "1@mail.ru";
$headers  = "From: " . strip_tags($sendfrom) . "\r\n";
$headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;charset=utf-8 \r\n";
$headers .= "Content-Transfer-Encoding: 8bit \r\n";
$subject = "Письмо с сайта";
$message = $message_form;

$send = mail ($to, $subject, $message, $headers);
if ($send == 'true') {
  echo '<p class="success">Спасибо за отправку вашего сообщения!</p>';
} else {
  echo '<p class="fail"><b>Ошибка. Сообщение не отправлено!</b></p>';
}
} else {
  echo '<p class="fail">Ошибка. Вы заполнили не все обязательные поля!</p>';
}
} else {

}
?>
 

Alexeina66

Мой дом здесь!
Регистрация
26 Авг 2013
Сообщения
403
Реакции
430
if (isset($_POST['dop1'])) { if (!empty($_POST['dop1'])){ $message_form .= "<b>Чекбокс поле 1:</b>"; $message_form .= strip_tags($_POST['dop1']) . "<br>"; } }
А если будет очень много чекбоксов, то как сделать вывод одной строкой через запятую?
UPD. Решил сам
Разметка
HTML:
<input type="checkbox" id="dop1" name="additional[]" value="Автоматическая оплата" title="200">
PHP:
$additional = '';
if (!empty($_POST["additional"]) && is_array($_POST["additional"]))
{
    $additional .= "<b>Дополнительный функционал:</b>";
    $additional .= implode(" ", $_POST["additional"]);
  
}
 
Последнее редактирование:

Fastdrop

Гуру форума
Регистрация
17 Май 2016
Сообщения
191
Реакции
63
Добрый день


Подскажите, а есть архив с работающим скриптом ? не совсем понятно как это всё прописать , что в какой файл )
 

steelfeet

Создатель
Регистрация
3 Июн 2019
Сообщения
24
Реакции
14
html код в лендос, код ПХП в файл mail.php в каталоге лендоса.
 

Fastdrop

Гуру форума
Регистрация
17 Май 2016
Сообщения
191
Реакции
63
html код в лендос, код ПХП в файл mail.php в каталоге лендоса.

Что то не запускается, пишет ошибку:

Uncaught ReferenceError: $ is not defined

в строке
var checkboxlp = $("#calclp input");

При нажатии отправить - вылетает в код
 
Сверху