Перейти к содержимому


Фото
- - - - -

Обратная связь на карточке товара

форма об обратная связь скрипт скрипт формы обратной связи скрипт формы

  • Чтобы отвечать, сперва войдите на форум
14 ответов в теме

#1 Advokat

Advokat
  • Пользователь
  • 14 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x

Опубликовано 31.03.2018 - 17:10

Добрый день форумчане! Сегодня задумал сделать форму обратной связи на карточке товара, а именно после описания.

Взял код стандартной обратной связи симпла, убрал строку "сообщения" оставил только "Имя" и "email" сменил на телефон. Скрипт стал выглядеть так:

 

<h1>Обратная связь</h1>
<form class="form feedback_form" method="post">
        
        <label>Имя</label>
        <input data-format=".+" data-notice="Введите имя" value="" name="name" maxlength="255" type="text">
        <label>Ваш телефон</label>
        <input data-format="email" data-notice="Введите ваш телефон" value="" name="email" maxlength="255" type="text">
        <input class="button right" type="submit" name="feedback" value="Отправить">
    </form>
 
Вставил его в описание товара через html.
 
Как выглядит, меня в принципе устраивает. Но что дальше делать, я не знаю. Первое это то что строку ту что я отвел под "телефон" нужно еще подредактировать чтобы форма отправляла только цифры
И второе, как эту форму связать с работой сайта, чтобы при нажатии отправить мне на почту приходило уведомление, или хотя бы в админке в разделе "обратная связь" появлялись уведомления.
 
 


#2 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 705 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 31.03.2018 - 18:40

view/FeedbackView.php
view/ProductView.php

#3 Advokat

Advokat
  • Пользователь
  • 14 сообщений
  • Верстка, Пользователь
  • Версия CMS:2.x

Опубликовано 31.03.2018 - 22:21

может у кого-то есть более обширный ответ))?



#4 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 705 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 31.03.2018 - 22:41

может у кого-то есть более обширный ответ))?

Бесплатно за вас никто делать доработку не будет, так что либо сами изучаете либо платите специалисту за работу. Всё просто.

#5 phukortsin

phukortsin
  • Пользователь
  • 469 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 01.04.2018 - 09:44

Более обширный:

Вариант 1.

1. Изучить полностью, как работает стандартная форма обратной связи (view/FeedbackView.php, api/Feedbacks.php, feedback.tpl) или форма комментария на странице товара.

2. Применить полученные знания на странице товара (view/ProductView.php, product.tpl), написав собственный добавочный программный код.

Вариант 2.

Изыскать средства для оплаты работы мастера-специалиста.

 

Пока что Вы сделали самую малую и самую легкую часть - примерно 5% от необходимого.



#6 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 705 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 01.04.2018 - 12:35

Пока что Вы сделали самую малую и самую легкую часть - примерно 5% от необходимого.

Интересно как ты дошёл до такого умозаключения?

#7 MStyle28

MStyle28
  • Пользователь
  • 173 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Одесса

Опубликовано 01.04.2018 - 18:10

Пишите в skype - mstyle28



#8 MStyle28

MStyle28
  • Пользователь
  • 173 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Одесса

Опубликовано 01.04.2018 - 18:15

В папке ajax создаём файл feedbacks.php с содержанием:

<?php
	session_start();
	require_once('../api/Simpla.php');
	$simpla = new Simpla();
	
	$feedback = new StdClass;
	$feedback->name = $simpla->request->post('name', 'string');
	$feedback->phone = $simpla->request->post('phone');
 
	$feedback_id = $simpla->feedbacks->add_feedback($feedback);
	$simpla->feedbacks->add_feedback(array('feedback_id'=>$feedback_id));

Вставляем в любом месте форму:

<form class="CallBack_form" method="post">
                    <div class="form-group">
                        <label for="callback_name">Ваше имя:</label>
                        <input type="text" id="callback_name" class="form-control" required="" name="callback_name">
                    </div>
                    <div class="form-group">
                        <label for="callback_phone">Телефон:</label>
                        <input type="text" id="callback_phone" class="form-control" required="" name="callback_phone">
                    </div>
                    <input type="submit" class="btn btn-default btn-lg" value="Отправить">
                </form>

И js обработчик:

 $(document).on('submit', '.CallBack_form', function(e) {
    	e.preventDefault();
    	$.ajax({
    		type: "post",
    		url: "/ajax/feedbacks.php",
    		data: {
    			name: $('#callback_name').val(),
    			phone: $('#callback_phone').val()
    		},
    		dataType: 'json'
    	});
    	$(".CallBack_form").html("<div class='form-header'><div class='text'><div class='title'>Заявка принята</div></div><div class='form_result success'>Спасибо! В ближайшее время мы с Вами свяжемся!</div></div>");
    });

 

P.S. Вёрстку придется под себя корректировать в любом случае.А и в базу в s_feedbacks добавьте phone,и пропишите его в api,и в админке для вывода.


Изменено: MStyle28, 01.04.2018 - 18:20


#9 phukortsin

phukortsin
  • Пользователь
  • 469 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 01.04.2018 - 20:42

В файле ajax/feedbacks.php последняя строка

$simpla->feedbacks->add_feedback(array('feedback_id'=>$feedback_id));

очень странная. По-моему, явно бессмысленое действие, которое даст ошибку.

 

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



#10 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 705 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 01.04.2018 - 21:04

В файле ajax/feedbacks.php последняя строка
$simpla->feedbacks->add_feedback(array('feedback_id'=>$feedback_id));
очень странная. По-моему, явно бессмысленое действие, которое даст ошибку.

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

Я долго ждал недовольства Корса :D

#11 MStyle28

MStyle28
  • Пользователь
  • 173 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Одесса

Опубликовано 01.04.2018 - 21:09

В файле ajax/feedbacks.php последняя строка

$simpla->feedbacks->add_feedback(array('feedback_id'=>$feedback_id));

очень странная. По-моему, явно бессмысленое действие, которое даст ошибку.

 

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

 

Какие ошибки при заполнении формы? Там required стоит в обоих полях.

 

И в целом, выложи своё решение :)



#12 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 705 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 02.04.2018 - 00:26

Какие ошибки при заполнении формы? Там required стоит в обоих полях.

И в целом, выложи своё решение :)

Это дешевизна, проверка должна быть как на фронт так и бек ендах!

#13 shooroop

shooroop
  • Фрилансер
  • 732 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Antarktida

Опубликовано 02.04.2018 - 00:58

Это дешевизна, проверка должна быть как на фронт так и бек ендах!

 

 

ну просто в indexview.php после

 

function fetch()

{

 

if($this->request->method('post') && $this->request->post('feedback'))
		{
			$feedback->name         = $this->request->post('name');
			$feedback->email        = $this->request->post('email');
$feedback->phone = $this->request->post('phone');
			$feedback->message      = $this->request->post('message');
			$captcha_code           = $this->request->post('captcha_code');
			
			$this->design->assign('name',  $feedback->name);
			$this->design->assign('email', $feedback->email);
$this->design->assign('phone', $feedback->phone);
			$this->design->assign('message', $feedback->message);
			
			if(empty($feedback->name))
				$this->design->assign('error', 'empty_name');
			elseif(empty($feedback->email))
	            elseif(empty($feedback->email))
                $this->design->assign('error', 'empty_phone');			$this->design->assign('error', 'empty_phone');
	
		elseif(empty($feedback->message))
				$this->design->assign('error', 'empty_text');
			elseif(empty($_SESSION['captcha_code']) || $_SESSION['captcha_code'] != $captcha_code || empty($captcha_code))
			{
				$this->design->assign('error', 'captcha');
			}
			else
			{
				$this->design->assign('message_sent', true);
				
				$feedback->ip = $_SERVER['REMOTE_ADDR'];
				$feedback_id = $this->feedbacks->add_feedback($feedback);
				
				// Отправляем email
				$this->notify->email_feedback_admin($feedback_id);				
				
				// Приберем сохраненную капчу, иначе можно отключить загрузку рисунков и постить старую
				unset($_SESSION['captcha_code']);
								
			}

и добавить поле в бд phone


Изменено: shooroop, 02.04.2018 - 01:00


#14 Noxter

Noxter

    Simpla Developer

  • Фрилансер
  • 6 705 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 02.04.2018 - 08:39

Facepalm

#15 phukortsin

phukortsin
  • Пользователь
  • 469 сообщений
  • Программирование, Пользователь
  • Версия CMS:2.x
  • Откуда:Львов

Опубликовано 02.04.2018 - 09:35

Facepalm

+1







Также с меткой «форма, об, обратная связь, скрипт, скрипт формы обратной связи, скрипт формы»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых