www.seomark.ru
Обзоры интересных и полезных программ, фотография, радио, веб-дизайн и т.д. и т.п. и др. и пр.

Веб-дизайн и поисковая оптимизация

Логотип Софт

Создание формы обратной связи

Форма обратной связи для заказа обедов в офис

В предыдущих примерах формы обратной связи на электронный адрес приходили письма в виде простого текста. Этот режим задаётся в РНР-файле по умолчанию. Однако иногда удобнее форматировать приходящее письмо для удобства его обработки: выделить важные фразы жирным шрифтом, сформировать таблицу и т.п. Для этого можно при создании писем использовать HTML-код.

Вернемся к созданной нами простейшей форме обратной связи (см. Создание формы обратной связи):

Вы можете отправить мне сообщение, заполнив следующую форму:

Ваше имя:

Ваш e-mail (для ответа):

Ваше сообщение:

Отправка сообщения с этой формы происходит с помощью РНР-файла, в котором нас интересуют следующие строчки (чтобы не повторяться, опять вынужден отослать вас к предыдущей статье Простая форма обратной связи с проверкой введенных данных. Прошу извинить!):
$to = "pupkin@rambler.ru"; /*Здесь укажите свой адрес!*/
$charset = "windows-1251";
$subject = "Сообщение с вашего сайта";
$message = "Имя пославшего: $name \nЭлектронный адрес: $email \nСообщение: $mess";
$send = mail ($to, $subject, $message);

Для задания вида письма необходимо добавить строку заголовков headers, которая служит для определения в почтовой программе некоторых дополнительных параметров письма. В частности, в headers можно указать тип документа text/plain (простой текст) или text/html (html-текст), адрес отправителя, кодировку и др. Для нашего случая, чтобы мы могли использовать обычные HTML теги, добавим следующую строчку заголовков:
$to = "pupkin@rambler.ru"; //Здесь укажите свой адрес
$headers = "Content-type: text/html; charset = windows-1251";
$subject = "Сообщение с вашего сайта";
$message = "<strong>Имя пославшего:</strong> $name <br />
Электронный адрес: <a href='mailto:$email'>$email</a> <br />
<strong>Сообщение:</strong> <font color=#ff0000>$mess</font >";
$send = mail ($to, $subject, $message, $headers);

Теперь мы можем оформлять отправляемые сообщения привычными тегами, а не РНР-шными \n, \r и др. При этом вам не надо штудировать справочники по РНР и другие очень умные и полезные книжки(!). Как вы заметили, в нашем примере я уже поиздевался над письмом, применив теги выделения <strong>, перевода строки <br /> и задания цвета <font color=#ff0000>. Обратите внимание на изменение в оформлении электронного адреса: раз уж мы перешли на HTML, то и адреса ссылок придется оформлять корректно - ложка дегтя для Винни-Пуха. И еще не забывайте, что браузеры по-разному интерпретируют HTML, и вид ваших писем может отличаться при просмотре в Opera или, например, в Firefox. Так что проблемы совместимости, мучающие всех веб-мастеров, снова вернутся к вам.

Если же вы не боитесь этих проблем, то перейдем к конкретному примеру - созданию меню для заказа обедов через интернет. Пусть оно будет выглядеть так (скудно, но пообедать можно):

Наименование Выход Ингредиенты Цена Кол-во
Салаты
Дачный 125/25 Кузнечики, ящерицы, одуванчики 37
Летний 125/25 Капуста, мясо кенгуру, клюква развесистая 33
Супы
Суп овощной  450 Вода, трава, опилки 37
Похлёбка по-суворовски (рыбная) 450 Сапоги, рыба фугу, собачатина 37
Второе
Бифштекс рубленый (б/г) 75 Хорошо проваренный канцелярский ластик 39
+ греча 180   51
+ рис 180   51
Рулет натуральный из курицы с зеленью (б/г) 90 Сиськи, письки, хвосты, крапива, белена 49
+ греча 180   61
+ рис 180   61
Выпечка, хлеб
Плюшка сдобная с сахаром 60   10
Хлеб ржаной кусок   1
Хлеб белый кусок   1
* Название вашей фирмы:
* Ваше имя, номер вашего телефона:
Ваш е-mail:
Замечания, пожелания

Как всегда, напоминаю, что форма работоспособная (попробуйте её заполнить), а HTML-код этого примера можно посмотреть и скопировать, нажав в браузере CTRL+U. При копировании не забудьте указать в форме страничку с РНР программой обработки <form action="mail.php" method="post">.

С помощью JavaScript (см. HTML-код страницы) дополнительно сделана проверка ввода количества блюд (допустимы только цифры) и обязательных полей названия фирмы и телефона. Клиент вводит количество блюд и свои реквизиты, после чего отсылает заказ. Вы получаете злектронное письмо и на его основании комплектуете обед для доставки. Если пришедшее письмо оформлено в виде простого текста, а ваше меню не такое бедное, а занимает несколько страниц, то разобраться в пришедшем к вам заказе достаточно сложно. В результате путаницы клиенту вполне может достаться оригинальное кушанье "Рыба "Курица" с гарниром из салата оливье под соусом "Компот из сухофруктов".

Чтобы такого не произошло, используем форматирование электронного письма с помощью HTML, задав в РНР-файле $header = "Content-type: text/html; charset = windows-1251". На мой взгляд, удобнее всего оформить письмо также в виде таблицы. Возможный вариант приходящего на ваш e-mail письма-заказа такой:

Заказ на вторник от Пупкин и Ко
Имя, телефон: 123456
Электронный адрес: pupkin@rambler.ru
Замечания: Кушать очень хочется!

Заказ на доставку обедов в офис
Салаты
Дачный 5
Летний 3
Супы
Суп овощной 8
Похлёбка по-суворовски (рыбная)  
Второе
Бифштекс рубленый (без гарнира) 2
+ греча  
+ рис 4
Рулет натуральный из курицы с зеленью (без гарнира)  
+ греча 6
+ рис  
Выпечка, хлеб
Плюшка сдобная с сахаром 10
Хлеб ржаной 23
Хлеб белый  

В таком письме-заказе вы сразу видите отмеченные пункты меню с количеством блюд. Это удобно! Для создания и отправки письма была использована простая РНР программа. Полный её текст, размещенный на странице mail.php, привожу ниже:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<meta name="Keywords" content="Доставка обедов в офис" />
<meta name="Description" content="Доставка обедов в офис" />
<title>Заказ обедов в офис</title>
</head>
<body>
<?php
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
if (isset($_POST['mess'])) {$mess = $_POST['mess'];}

if (isset($_POST['menu_01'])) {$menu_01 = $_POST['menu_01'];}
if (isset($_POST['menu_02'])) {$menu_02 = $_POST['menu_02'];}
if (isset($_POST['menu_03'])) {$menu_03 = $_POST['menu_03'];}
if (isset($_POST['menu_04'])) {$menu_04 = $_POST['menu_04'];}
if (isset($_POST['menu_05'])) {$menu_05 = $_POST['menu_05'];}
if (isset($_POST['menu_06'])) {$menu_06 = $_POST['menu_06'];}
if (isset($_POST['menu_07'])) {$menu_07 = $_POST['menu_07'];}
if (isset($_POST['menu_08'])) {$menu_08 = $_POST['menu_08'];}
if (isset($_POST['menu_09'])) {$menu_09 = $_POST['menu_09'];}
if (isset($_POST['menu_10'])) {$menu_10 = $_POST['menu_10'];}
if (isset($_POST['menu_11'])) {$menu_11 = $_POST['menu_11'];}
if (isset($_POST['menu_12'])) {$menu_12 = $_POST['menu_12'];}
if (isset($_POST['menu_13'])) {$menu_13 = $_POST['menu_13'];}

$to = "pupkin@mail.ru";
$subject = "Заказ на вторник";
$message = "<strong>Заказ на вторник от $name<br />
Имя, телефон: $phone<br />
Электронный адрес: <a href='mailto:$email'>$email</a> <br />
Замечания: </strong><font color=#ff0000>$mess</font ><br />
<br />
<table width='600' border='1' cellpadding='1' cellspacing='0' >
<tr >
<th colspan='2' bgcolor='#ccffff' align='center'>Заказ на доставку обедов в офис</th>
</tr>
<tr>
<th colspan='2' > Салаты </th>
</tr>
<tr >
<td width='550'>Дачный</td>
<th width='50'>$menu_01</th>
</tr>
<tr >
<td >Летний</td>
<th >$menu_02</th>
</tr>
<tr>
<th colspan='2' > Супы</th>
</tr>
<tr >
<td >Суп овощной</td>
<th >$menu_03</th>
</tr>
<tr >
<td >Похлёбка по-суворовски (рыбная)</td>
<th >$menu_04</th>
</tr>
<tr>
<th colspan='2' > Второе</th>
</tr>
<tr>
<th align='left' > Бифштекс рубленый (без гарнира)</th>
<th >$menu_05</th>
</tr>
<tr>
<td >+ греча</td>
<th >$menu_06</th>
</tr>
<tr >
<td >+ рис</td>
<th >$menu_07</th>
</tr>
<tr>
<th align='left' > Рулет натуральный из курицы с зеленью (без гарнира)</th>
<th >$menu_08</th>
</tr>
<tr>
<td >+ греча</td>
<th >$menu_09</th>
</tr>
<tr >
<td >+ рис</td>
<th >$menu_10</th>
</tr>
<tr >
<th colspan='2' >Выпечка, хлеб</th>
</tr>
<tr>
<td >Плюшка сдобная с сахаром</td>
<th >$menu_11</th>
</tr>
<tr>
<td >Хлеб ржаной</td>
<th >$menu_12</th>
</tr>
<tr>
<td >Хлеб белый</td>
<th >$menu_13</th>
</tr>
</table>";
$headers = "Content-type: text/html; charset = windows-1251";
$send = mail ($to, $subject, $message, $headers);
if ($send == 'true')
{
echo "<p align='center'><b>Спасибо за отправку вашей заявки.<br />";
echo "В ближайшее время с вами свяжутся наши менеджеры.";
}
else
{
echo "<p><b>Ошибка. Сообщение не отправлено!";
}
?>
</body>
</html>

При написании всоего варианта меню не забудьте заменить адрес г.Пупкина на адрес вашей почты. Кстати, к вопросу о совместимости браузеров. Вы заментили в приведенном примере странную комбинацию <th align='center'>, хотя тег <th> уже подразумевает выравнивание содержимого по центру, но Firefox напрочь это игнорировал, и пришлось вводить атрибут align='center'.

Приведенная форма обратной связи для заказа обедов - простейшая, поэтому её легко изменять и корректировать. Не стоит забывать, что меню регулярно меняется (обычно ежедневно), и вам придется его править самостоятельно, если не сможете найти раба или рабыню.

Дополнительно вы можете посмотреть реально работающее меню, созданное с помощью формы обратной связи, на сайте "Заказ обедов в офис".

При большом меню приходящее на ваш электронный адрес письмо получается громоздким и его многостраничная распечатка никак не помогает сберечь леса нашей родины. Поэтому следующий шаг - избавиться от пустых ячеек и оставить в письме только те, в которых указано количество заказываемых блюд. Как это сделать, рассмотрим в следующей статье.

22.11.2010 г.

Задать вопрос автору

Создание и продвижение сайтов





Яндекс.Метрика

Copyright © 2008 - Марк Розенталь e-mail: Мой e-mail
Перепечатка материалов сайта разрешается при условии сохранения имени автора и гиперссылки на www.seomark.ru
Ключевые слова: создание анкеты на сайте, форма обратной связи для заказа обедов, отправка e-mail с сайта, интернет магазин