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

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

Логотип Софт

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

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

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

Один из вариантов решения этой задачи - убрать пустые, не заполненные пункты меню в РНР-программе, ответственной за отправку письма. Для этого сделаем небольшие изменения в файле mail.php:

  1. Разделим текст сообщения message, то есть нашего меню, на отдельные куски HTML-кода, каждый из которых отвечает за заказ одного из блюд.
  2. Так как текст меню формируется с помощью аргумента message (сообщение) функции mail, то мы можем обьединить в сообщении отдельные куски с помощью оператора конкатенации (объединения) « . = ».
  3. При окончательном формировании сообщения из отдельных пунктов-кусков будем последовательно проверять, ввел ли заказчик что-либо в каждой строке формы-заказа. Если поле ввода осталось пустым (empty), то пропускаем этот кусок (пустой оператор « ; » - ничего не выводим) и переходим к следующему пункту, а иначе (else) - выводим строчку с указанным количеством блюд.

Вот как теперь будет выглядеть формирование письма в нашем примере:

$to = "pupkin@mail.ru"; // адрес получателя
$headers = "Content-type: text/html; charset = windows-1251";
$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>"; // Вывод заголовка и первого раздела меню
if (empty($menu_01)) //Проверка ввода количества блюд
{
; //Пустой оператор, если ничего не введено
}
else //иначе выводим строчку с количеством заказанных блюд
{
$message .= "<tr >
<td width='550'>Дачный</td>
<th width='50'>$menu_01</th>
</tr>"; // вывод количества заказанных салатов Дачный
}

и так далее...

Аналогично проверяем остальные пункты заказа. В результате на наш электронный адрес будет приходить вполне удобоваримое письмо, если, конечно, клиент не закажет сотню блюд с целью обожраться и умереть молодым.

На всякий случай, как всегда, привожу полный текст РНР-файла для рассмотренного нами заказа обедов с помощью формы обратной связи:

<!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>
<?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'];}
if (empty($name))
{
echo "<b>Не указано имя!<p>";
echo "<a href=menu.html>Вернуться к оформлению заказа</a>";
exit;
}
else
if (empty($phone))
{
echo "<b>Не указан телефон!<p>";
echo "<a href=menu.html>Вернуться к оформлению заказа</a>";
exit;
}
else
$to = "pupkin@rambler.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>"; // Вывод заголовка и раздела меню
if (empty($menu_01)) //Проверка ввода количества блюд
{
; //Пустой оператор, если ничего не введено
}
else //иначе выводим строчку с количеством заказанных блюд
{
$message .= "<tr >
<td width='550'>Дачный</td>
<th width='50'>$menu_01</th>
</tr>";//вывод количества заказанных салатов Дачный. Далее аналогично
}
if (empty($menu_02))
{
;
}
else
{
$message .= "<tr >
<td >Летний</td>
<th >$menu_02</th>
</tr>";
}
$message .= "<tr>
<th colspan='2' > Супы</th>
</tr>";
if (empty($menu_03))
{
;
}
else
{
$message .= "<tr >
<td >Суп овощной</td>
<th >$menu_03</th>
</tr>";
}
if (empty($menu_04))
{
;
}
else
{
$message .= "<tr >
<td >Похлёбка по-суворовски (рыбная)</td>
<th >$menu_04</th>
</tr>";
}
$message .= "<tr>
<th colspan='2' > Второе</th>
</tr>
<tr>
<th align='left' > Бифштекс рубленый (без гарнира)</th>
<th >$menu_05</th>
</tr>";
if (empty($menu_06))
{
;
}
else
{
$message .= "<tr>
<td >+ греча</td>
<th >$menu_06</th>
</tr>";
}
if (empty($menu_07))
{
;
}
else
{
$message .= "<tr >
<td >+ рис</td>
<th >$menu_07</th>
</tr>";
}
$message .= "<tr>
<th align='left' > Рулет натуральный из курицы с зеленью (без гарнира)</th>
<th >$menu_08</th>
</tr>";
if (empty($menu_09))
{
;
}
else
{
$message .= "<tr>
<td >+ греча</td>
<th >$menu_09</th>
</tr>";
}
if (empty($menu_10))
{
;
}
else
{
$message .= "<tr >
<td >+ рис</td>
<th >$menu_10</th>
</tr>";
}
$message .= "
<tr >
<th colspan='2' >Выпечка, хлеб</th>
</tr>";
if (empty($menu_11))
{
;
}
else
{
$message .= "<tr>
<td >Плюшка сдобная с сахаром</td>
<th >$menu_11</th>
</tr>";
}
if (empty($menu_12))
{
;
}
else
{
$message .= "<tr>
<td >Хлеб ржаной</td>
<th >$menu_12</th>
</tr>";
}
if (empty($menu_13))
{
;
}
else
{
$message .= "<tr>
<td >Хлеб белый</td>
<th >$menu_13</th>
</tr>";
}
$message .= "</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 "Вы заказали следующие блюда:";
echo "$message"; // вывод таблицы с заказанными блюдами
}
else
{
echo "<p><b>Ошибка. Сообщение не отправлено!";
}
?>
</html>

Если заказ успешно отправлен, то появится сообщение: " Ваша заявка успешно отправлена! Вы заказали следующие блюда: ..." - и выводится таблица, в которую включены только отмеченные блюда из меню. Это позволит голодающему заказчику проконтролировать его заявку и начать вырабатывать желудочный сок в предвкушении обеда.

Описанная РНР-программа содержит много повторяющихся команд. Конечно, можно всё это сократить, использовав циклы, массивы и проч., но в нашем случае я стремился сделать программу понятной для неспециалистов, поэтому и применил только конструкцию if ... else. Главное - программа работает, а найти и исправить возможные ошибки при самостоятельном написании аналогичной программы не составит труда даже не искушенному в РНР человеку.

3.12.2010 г.

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

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




Rambler's Top100
Партнерская сеть Миксмаркет - партнерские программы для людей и их сайтов
3G Безлимитка - отличный способ смотреть видео inTv.ru
Бесплатные звонки в более чем 20 стран с мобильного телефона

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