Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.10.2015, 01:28
Интересующийся
Отправить личное сообщение для markfostel Посмотреть профиль Найти все сообщения от markfostel
 
Регистрация: 21.09.2015
Сообщений: 17

Прошу помощи с формой обратной связи
Дорогие форумчане, прошу помощи.

Есть форма обратной связи (код ниже), все работает, но я добавил в нее еще одно поле "
<input type="text" placeholder="Ваше сообщение" name="mesg" id="mesg" class="input_text"/>
" и никак не могу понять, как его прописать в файле параметров и feedback.php, чтобы сообщение приходило вместе с этим полем. Сейчас мне приходит сообщение в следующем виде:
Адрес моего сайта
name : имя отправителя фидбэка
phone: номер отправителя фидбэка
*(вот от этих "name:" и "phone:" я бы тоже хотел избавиться)

Мне необходимо получить следующий вид сообщения:
Адрес моего сайта
Имя отправителя фидбэка
Номер отправителя фидбэка <br>
Сообщение отправителя

Я новичок, а тут какой-то странный код обратки , никак не могу понять что откуда берется и куда отправляется. Буду очень благодарен!
Далее код:

<form method="post" id="form-feedback">
        <input type="text" placeholder="Ваше имя" name="name" id="name" class="input_text"/>
        <div id="bthrow_error_name"></div>
        <input type="text" placeholder="Контактный телефон" name="phone" id="phone" class="input_text"/>
        <div id="bthrow_error_phone"></div>


        <input type="text" placeholder="Ваше сообщение" name="mesg" id="mesg" class="input_text"/>
         

 


        <input class="button" type="submit" value="Отправить заявку" />
        <div class="throw_error"></div>
    </form>


Для нее есть следующие параметры:

$("#form-feedback").submit(function(event) {
			 
			        if ($('#name').val() == "")
			            {
			                $('#bthrow_error_name').fadeIn(1000).html('Представьтесь, пожалуйста.');
			            }
			        else if 
			        	($('#phone').val() == "")
			            {
			                $('#bthrow_error_name').empty();
			                $('#bthrow_error_phone').fadeIn(1000).html('Как с Вами связаться?');
			            }
			        else
			            {
			                var postForm = {
			                    'name'  : $('#name').val(),
			                    'phone'  : $('#phone').val()
			                     
			                };
			 
			                $.ajax({
			                    type        : 'POST',
			                    url         : 'feedback.php',
			                    data        : postForm,
			                    dataType    : 'json',
			                    success     : function(data)
			                        {
			                            if (!data.success)
			                                {
			                                    if (data.errors.name)
			                                        {
			                                            $('.throw_error').fadeIn(1000).html(data.errors.name);
			                                        }
			                                }
			                            else
			                                {
			                                    $('#form-feedback').fadeIn(1000).html('<p>' + data.posted + '</p>');
			                                }
			                        }
			                });
			            }
			 
			        event.preventDefault();
			 
			    });


А также
$(function() {

    $('#popupbutton').fancybox({
        'padding': 37,
        'overlayOpacity': 0.87,
        'overlayColor': '#fff',
        'transitionIn': 'none',
        'transitionOut': 'none',
        'titlePosition': 'inside',
        'centerOnScroll': true,
        'maxWidth': 400,
        'minHeight': 310

    });

    $('#phone').mask('0 (000) 000-00-00');

    $("#form-feedback").submit(function(event) {

        if ($('#name').val() == "")
            {
                $('#bthrow_error_name').fadeIn(1000).html('Представьтесь, пожалуйста.');
            }
        else if ($('#phone').val() == "")
            {
                $('#bthrow_error_name').empty();
                $('#bthrow_error_phone').fadeIn(1000).html('Как с Вами связаться?');
            }
        else if ($('#mesg').val() == "")
            {
                $('#bthrow_error_name').empty();
                 
            }
        else
            {
                var postForm = {
                    'name'  : $('#name').val(),
                    'phone'  : $('#phone').val()
                    'mesg'  : $('#mesg').val()
                };

                $.ajax({
                    type        : 'POST',
                    url         : 'feedback.php',
                    data        : postForm,
                    dataType    : 'json',
                    success     : function(data)
                        {
                            if (!data.success)
                                {
                                    if (data.errors.name)
                                        {
                                            $('.throw_error').fadeIn(1000).html(data.errors.name);
                                        }
                                }
                            else
                                {
                                    $('#form-feedback').fadeIn(1000).html('<p>' + data.posted + '</p>');
                                }
                        }
                });
            }

        event.preventDefault();

    });

});


и php:
<?php

$errors = array();
$form_data = array();

if ($_POST['name'] == "")
    {
        $errors['name'] = 'Введите Ваше имя';
    }

if ($_POST['phone'] == "")
{
    $errors['name'] = 'Введите Ваш телефон';
}



if (!empty($errors))
    {
        $form_data['success'] = false;
        $form_data['errors']  = $errors;
    }
else
    {
        $message = "<h1>Заявка с сайта ".$_SERVER['HTTP_HOST']."</h1>";

        foreach($_POST as $k => $v)
            {
                $message .= $k.": ".$v."<br />";
            }

        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=utf8' . "\r\n";

         

        if (mail('xdd24@yandex.ru', 'Заявка с сайта '.$_SERVER['HTTP_HOST'], $message, $headers))
            {
                $form_data['success'] = true;
                $form_data['posted'] = 'Наши менеджеры свяжутся с Вами в ближайшее время';
            }
        else
            {
                $errors['name'] = 'Ошибка отправки письма';
            }
    }


echo json_encode($form_data);

?>
Ответить с цитированием
  #2 (permalink)  
Старый 13.10.2015, 05:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Зачем отправлять форму из двух обработчиков?
Ответить с цитированием
  #3 (permalink)  
Старый 13.10.2015, 06:16
Интересующийся
Отправить личное сообщение для markfostel Посмотреть профиль Найти все сообщения от markfostel
 
Регистрация: 21.09.2015
Сообщений: 17

Сообщение от laimas Посмотреть сообщение
Зачем отправлять форму из двух обработчиков?
немного не понимаю
как тут должно быть?
Ответить с цитированием
  #4 (permalink)  
Старый 13.10.2015, 06:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от markfostel
немного не понимаю
Строка 1, код 1 - $("#form-feedback").submit(function(event) ... отправка формы.

Строка 18, код 2 - $("#form-feedback").submit(function(event) ... отправка формы в плагине fancybox.
Ответить с цитированием
  #5 (permalink)  
Старый 13.10.2015, 17:43
Интересующийся
Отправить личное сообщение для markfostel Посмотреть профиль Найти все сообщения от markfostel
 
Регистрация: 21.09.2015
Сообщений: 17

Сообщение от laimas Посмотреть сообщение
Строка 1, код 1 - $("#form-feedback").submit(function(event) ... отправка формы.

Строка 18, код 2 - $("#form-feedback").submit(function(event) ... отправка формы в плагине fancybox.
Понял, это уберу. А по поводу моего вопроса можете сказать?
Ответить с цитированием
  #6 (permalink)  
Старый 13.10.2015, 18:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А что именно подсказать? Добавляйте обработку на сервере и добавленного поля, оно будет под ключом $_POST['mesg'].

Последний раз редактировалось laimas, 13.10.2015 в 18:54.
Ответить с цитированием
  #7 (permalink)  
Старый 13.10.2015, 22:26
Интересующийся
Отправить личное сообщение для markfostel Посмотреть профиль Найти все сообщения от markfostel
 
Регистрация: 21.09.2015
Сообщений: 17

Сообщение от laimas Посмотреть сообщение
А что именно подсказать? Добавляйте обработку на сервере и добавленного поля, оно будет под ключом $_POST['mesg'].
Я не понимаю как правильно это сделать, не силен в этой части совсем
Я пытался добавлять так, но ничего не получалось

И не вижу где тут убрать надписи "name" и "phone", которые приходят в сообщении
Ответить с цитированием
  #8 (permalink)  
Старый 13.10.2015, 22:30
Интересующийся
Отправить личное сообщение для markfostel Посмотреть профиль Найти все сообщения от markfostel
 
Регистрация: 21.09.2015
Сообщений: 17

Сообщение от laimas Посмотреть сообщение
А что именно подсказать? Добавляйте обработку на сервере и добавленного поля, оно будет под ключом $_POST['mesg'].
Я прочитал еще вчера как сделать форму обратной связи и самую простую форму со всеми нужными полями я сделать могу. и всё будет работать. но мне понадобилось сделать валидацию каждого поля, чтобы форма отправлялась только если заполнены все поля. вот с валидацией я запутался, поэтому нашел эту готовую форму, но код ее мне не понятен

я понимаю, что тут где-то две строчки всего лишь дописать надо, но не понимаю куда и какие
Ответить с цитированием
  #9 (permalink)  
Старый 13.10.2015, 22:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

В обработчике ancybox в строках 20-33 находятся условия такой проверки полей. Только нужно добавить же вывод сообщения и для поле mesg, если оно не заполнено, то тоже типа

$('#bthrow_error_mesg').fadeIn(1000).html('Заполните....');


в строку 33, и добавив в форму

<div id="bthrow_error_mesg"></div>


Ну и на сервере

if ($_POST['mesg'] == "")
{
    $errors['mesg'] = 'Заполните ... ';
}


Только не понятно, зачем возвращать на клиента сообщения о не заполнении полей, если клиент и сам их с успехом формирует, достаточно возвращать наличие (признак) ошибки в поле.

И так не проверяют if ($_POST['mesg'] == ""), так как пробел уже не равен пустой строке, но в тоже время это ничто. Нужно убирать крайние пробелы, и лишь затем проверять пустая ли строка:

$_POST = array_map('trim', $_POST);

//А теперь можно и

if ($_POST['name'] == "")
.....

Последний раз редактировалось laimas, 13.10.2015 в 22:59.
Ответить с цитированием
  #10 (permalink)  
Старый 13.10.2015, 23:09
Интересующийся
Отправить личное сообщение для markfostel Посмотреть профиль Найти все сообщения от markfostel
 
Регистрация: 21.09.2015
Сообщений: 17

Сообщение от laimas Посмотреть сообщение
В обработчике ancybox в строках 20-33 находятся условия такой проверки полей. Только нужно добавить же вывод сообщения и для поле mesg, если оно не заполнено, то тоже типа

$('#bthrow_error_mesg').fadeIn(1000).html('Заполните....');


в строку 33, и добавив в форму

<div id="bthrow_error_mesg"></div>


Ну и на сервере

if ($_POST['mesg'] == "")
{
    $errors['mesg'] = 'Заполните ... ';
}


Только не понятно, зачем возвращать на клиента сообщения о не заполнении полей, если клиент и сам их с успехом формирует, достаточно возвращать наличие (признак) ошибки в поле.

И так не проверяют if ($_POST['mesg'] == ""), так как пробел уже не равен пустой строке, но в тоже время это ничто. Нужно убирать крайние пробелы, и лишь затем проверять пустая ли строка:

$_POST = array_map('trim', $_POST);

//А теперь можно и

if ($_POST['name'] == "")
.....

Получается, так? Код:

HTML:

<h2>Обратная связь</h2>
					    <div class="comment"></div>
					    <form method="post" id="form-feedback" >
					        <input type="text" placeholder="Ваше имя" name="name" id="name" class="input_text"/>
					        <div id="bthrow_error_name"></div>
					        <br>
					        <input type="text" placeholder="Контактный телефон" name="phone" id="phone" class="input_text"/>
					        <div id="bthrow_error_phone"></div>

					         

					        <input class="button submit_callback_button_1" type="submit" value="Отправить заявку" />
					        <div id="bthrow_error_mesg"></div>
					    </form>

					    <span class="under-form"></span>


JS:
$('#phone').mask('0 (000) 000-00-00');
					$("#form-feedback").submit(function(event) {
			 
			        if ($('#name').val() == "")
			            {
			                $('#bthrow_error_name').fadeIn(1000).html('Представьтесь, пожалуйста.');
			            }
			        else if 
			        	($('#phone').val() == "")
			            {
			                $('#bthrow_error_name').empty();
			                $('#bthrow_error_phone').fadeIn(1000).html('Как с Вами связаться?');
			            }
			        else if 
			        	($('#mesg').val() =="")
			        	{
			        		$('#bthrow_error_mesg').fadeIn(1000).html('Пожалуйста, напишите сообщение');

			        	}

			        else
			            {
			                var postForm = {
			                    'name'  : $('#name').val(),
			                    'phone'  : $('#phone').val()
			                    'mesg'  : $('#mesg').val()
			                     
			                };
			 
			                $.ajax({
			                    type        : 'POST',
			                    url         : 'feedback.php',
			                    data        : postForm,
			                    dataType    : 'json',
			                    success     : function(data)
			                        {
			                            if (!data.success)
			                                {
			                                    if (data.errors.name)
			                                        {
			                                            $('.throw_error').fadeIn(1000).html(data.errors.name);
			                                        }
			                                }
			                            else
			                                {
			                                    $('#form-feedback').fadeIn(1000).html('<p>' + data.posted + '</p>');
			                                }
			                        }
			                });
			            }
			 
			        event.preventDefault();
			 
			    });


PHP:


<?php

$errors = array();
$form_data = array();

if ($_POST['name'] == "")
    {
        $errors['name'] = 'Введите Ваше имя';
    }

if ($_POST['phone'] == "")
{
    $errors['name'] = 'Введите Ваш телефон';
}

if ($_POST['mesg'] == "")
{
$errors['mesg'] = 'Пожалуйста, напишите сообщение';
}



if (!empty($errors))
    {
        $form_data['success'] = false;
        $form_data['errors']  = $errors;
    }
else
    {
        $message = "<h1>Заявка с сайта ".$_SERVER['HTTP_HOST']."</h1>";

        foreach($_POST as $k => $v)
            {
                $message .= $k.": ".$v."<br />";
            }

        $headers  = 'MIME-Version: 1.0' . "\r\n";
        $headers .= 'Content-type: text/html; charset=utf8' . "\r\n";

         

        if (mail('xdd24@yandex.ru', 'Заявка с сайта '.$_SERVER['HTTP_HOST'], $message, $headers))
            {
                $form_data['success'] = true;
                $form_data['posted'] = 'Благодарим за обращение! Наши менеджеры свяжутся с Вами в ближайшее время';
            }
        else
            {
                $errors['name'] = 'Ошибка отправки письма';
            }
    }


echo json_encode($form_data);

?>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь - форма обратной связи со скачиванием файла Baton1777 Общие вопросы Javascript 3 24.05.2015 02:21
Смена кнопки в форме обратной связи xavibeat Общие вопросы Javascript 6 10.05.2014 04:57
Открытие нужной вкладки на форме обратной связи user999 AJAX и COMET 17 26.02.2014 19:02
Форма обратной связи с аттачем 2х изображений. Джейн Работа 2 04.11.2011 00:19
Форма отправки сообщения в скрипте отдельного окна I-love_Chicago Элементы интерфейса 10 30.08.2009 23:16