D
D
dotan902020-04-26 03:17:58
PHP
dotan90, 2020-04-26 03:17:58

Sending a form to the mail?

There is an order form in which there are 5 checkboxes, how can I make the form send the content to the mail? I formed PHP, but how to add it to the message?
here is the HTML code.

<form  id="order_form" method="POST">
                <input type="hidden" name="formData" value="Оформление заказа">
                <div class="col-md-6 col-sm-12 forms-wrap">
                    <div class="personal-data">
                        <div class="section__title">Личные данные</div>
                        <fieldset class="fieldset">
                            <input type="text" required="required" data-msg-required="Это поле необходимо заполнить"
                                name="user_name" placeholder="Ваше имя" value="" class="input required">
                        </fieldset>
                        <fieldset class="fieldset">
                            <input type="tel" required="required"
                                data-msg-vekaphonecustomUa="Пожалуйста, введите корректный телефон"
                                data-msg-phonecustom="Пожалуйста, введите корректный телефон"
                                data-msg-required="Это поле необходимо заполнить" name="user_phone"
                                data-mask="+7 (999) 999-99-99" placeholder="Номер телефона" value=""
                                class="input js-phone required">
                        </fieldset>
                        <fieldset class="fieldset">
                            <input type="email" data-msg-email="Введите корректный email" name="user_email"
                                placeholder="E-mail" value="" class="input">
                        </fieldset>
                        <fieldset class="fieldset">
                            <textarea name="user_message" placeholder="Ваш комментарий" class="input"></textarea>
                        </fieldset>
                    </div>
                </div>
                <div class="col-md-6 col-sm-12 forms-wrap">
                    <div class="additional-options">
                        <div class="section__title">Дополнительные опции</div>
                        <fieldset class="fieldset">
                            <select data-placeholder="Тип вашего дома" name="type_house" class="select js-select">
                                <option selected value="">не выбран</option>
                                <option value="1">Панельный</option>
                                <option value="2">Кирпичный</option>
                                <option value="3">Деревянный</option>
                            </select>
                        </fieldset>
                        <fieldset class="fieldset checkbox-wrap">
                            <label class="checkbox">
                                <input type="checkbox" id="ch1" name="options[]" value="Подоконник" checked-true><span
                                    class="checkbox__text">Подоконник</span>
                            </label>
                            <label class="checkbox">
                                <input type="checkbox" id="ch2" name="options[]" value="Отливы" checked-true
                                    class="checkbox"><span class="checkbox__text">Отливы</span>
                            </label>
                            <label class="checkbox">
                                <input type="checkbox" id="ch3" name="options[]" value="Откосы" class="checkbox"><span
                                    class="checkbox__text">Откосы</span>
                            </label>
                            <label class="checkbox">
                                <input type="checkbox" id="ch4" name="options[]" value="Москитная сетка"
                                    class="checkbox"><span class="checkbox__text">Москитная сетка</span>
                            </label>
                            <label class="checkbox">
                                <input type="checkbox" id="ch5" name="options[]" value="Монтаж" checked-true
                                    class="checkbox"><span class="checkbox__text">Монтаж</span>
                            </label>
                        </fieldset>
                    </div>
                    <div class="ordering-forms__checkbox">
                        <fieldset class="fieldset">
                            <label class="checkbox">
                                <input type="checkbox" name="user_agreement" data-rule-required="true"
                                    data-msg-required="Пожалуйста, подтвердите согласие на обработку персональных данных"
                                    required="required">
                                <span class="checkbox__text">Ознакомлен с <a href="reglament.html"
                                        target="_blank">Регламентом о защите персональных данных</a> и выражаю <a
                                        href="agreement.html" target="_blank">согласие</a> на их обработку</span>
                            </label>
                        </fieldset>
                    </div>
                </div>
            </form>

Here is the JavaScript:
$(document).ready(function () {
            $('form').submit(function () {
                var formID = $(this).attr('id'); // Получение ID формы
                var formNm = $('#' + formID);
                $.ajax({
                    type: 'POST',
                    url: 'order_form.php', // Обработчик формы отправки
                    data: formNm.serialize(),
                    success: function (data) {
                        // Вывод текста результата отправки в текущей форме
                        $(formNm).html(data);
                    }
                });
                return false;
            });
        });

And here is PHP:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (isset($_POST['formData'])) {$formData = $_POST['formData'];}
    if (isset($_POST['user_name'])) {$user_name = $_POST['user_name'];}
    if (isset($_POST['user_phone'])) {$user_phone = $_POST['user_phone'];}
    if (isset($_POST['user_email'])) {$user_email = $_POST['user_email'];}
    if (isset($_POST['user_message'])) {$user_message = $_POST['user_message'];}
    if(!isset($_POST['type_hause'])){$type_hause = $_POST['type_hause'];}
    if(empty('options')){echo("не выбрано ни одного значения");echo'<br>';}
    else{
        $N = count($options);
        for($i=0;$i<$N;$i++)
        {
            echo('- '.$options[$i]."");echo '<br>';
        }
    }
    if (isset($_POST['user_agreement'])) {$AGREEMENT = $_POST['user_agreement'];}

    $to = "[email protected]"; /*Укажите ваш адрес электронной почты*/
    $headers = "Content-type: text/html; charset = utf-8";
    $subject = "$formData";
    $message = "$formData"."<br>";
    $message.= "Отправитель: $user_name"."<br>";
    $message.= "Телефон: $user_phone"."<br>";
    $message.= "Почта: $user_email"."<br>";
    $message.= "Сообщение: $user_message"."<br>";
    $message.= "Тип дома: $type_hause"."<br>";
    $message.= "Опции: $options"."<br";
    $send = mail ($to, $subject, $message, $headers);
    if ($send == 'true')
    {
    echo '<div class="modal__icon"><img src="images/logo.svg"></div>
    <span>Ваша заявка успешно отправлена!</span>
    <p>Благодарим вас за обращение в компанию VEKA. Наши партнеры свяжутся с вами в течение
        нескольких часов. Если в течение одного рабочего дня вы не получите ответа, пожалуйста,
        напишите в службу поддержки по адресу
        <a href="mailto:[email protected]"><b>[email protected]</b></a></p>';
    }
    else 
    {
    echo "<center><b>Ошибка. Сообщение не отправлено! Проверьте правильность введенных данных</b></center>";
    }
} else {
    http_response_code(403);
    echo "Попробуйте еще раз";
}
?>

For the third day I sit all I think I think I can think of nothing. The form doesn't even try to do anything when the button is clicked.

Answer the question

In order to leave comments, you need to log in

2 answer(s)
M
Mors Clamor, 2020-04-26
@66demon666

Well, debug sending, in JS, does the event catch, otherwise this is me

$('form').submit(function () {
...

confuses

M
Mark, 2020-04-26
@yourbatya

$('form[id="order_form"]').on('submit', function() {
    let $row = $(this).closest('form');
    let data = $row.find('input, select, textarea').serialize();
    $.ajax({
        type: "POST",
        url: "order_form.php",
        data: data
    }).done(function() {
        alert("Успешно!");
    });
    return false;
});

Try like this.
But you need to put your button that submits the form inside the tag, otherwise nothing will ever work for you.
In addition, look in dev tools (F12) - Network tab, what data and in what form you send after changes.
Then php itself... Did you take it ready-made from somewhere or did you write it yourself?
First, you declare variables for each parameter you pass.
if (isset($_POST['formData'])){
$name = strip_tags(trim($_POST['user_name']));
$phone = preg_replace("/[^+0-9]/s", "", strip_tags(trim($_POST['user_phone'])));
...
}

In addition, in the form you have, the mail will simply receive the text "Sender: $user_name".
To enter the value of a variable, you need to do this:
$message.= 'Отправитель: ' . $user_name . '<br>
Телефон: ' . $user_phone . '<br>
Почта: ' . $user_email . '<br>
Сообщение: ' . $user_message . '<br>
Тип дома: ' . $type_hause . '<br>"
Опции: ' . $options . '<br>';

Try this and write what is displayed in your devtools. But for good, what you have in php should be rewritten from scratch, because I doubt that something will work there if you do not understand this.
Look at a simpler example
. I also found a cant. When you add a button inside the form tag, type="submit" to the button, otherwise it won't submit the form on click.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question