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

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

Логотип Софт

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

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

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

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

  1. Разделим текст сообщения message, то есть нашего меню, на отдельные куски HTML-кода, каждый из которых отвечает за заказ одного из блюд.
  2. Так как текст меню формируется с помощью аргумента message (сообщение) функции mail, то мы можем обьединить в сообщении отдельные куски с помощью оператора конкатенации (объединения) « . = ».
  3. При окончательном формировании сообщения из отдельных пунктов-кусков будем последовательно проверять, ввел ли заказчик что-либо в каждой строке формы-заказа. Для этого используем конструкцию if ($menu_01 != 0): если условие выполнено, то есть введено какое-то не нулевое количество блюд, то выводим строчку с указанным количеством блюд (блок, заключенный в фигурные скобки), а если не выполнено, то он игнорируется. Обратите внимание, что оператор сравнения != означает "не равно".

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

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

if ($menu_02 != 0) //Проверка ввода количества блюд в пункте menu_02.
{
$message .= "<tr >
<td >Летний</td>
<th >$menu_02</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=utf-8" />
<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'];}

$to = "pupkin@rambler.ru"; // указать свой адрес
$headers = "Content-type: text/html; charset = utf-8";
$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 ($menu_01 != 0) //Проверка ввода количества блюд
{
$message .= "<tr >
<td width='550'>Дачный</td>
<th width='50'>$menu_01</th>
</tr>";//вывод количества заказанных салатов Дачный. Далее аналогично
}
if ($menu_02 != 0)
{
$message .= "<tr >
<td >Летний</td>
<th >$menu_02</th>
</tr>";
}
$message .= "<tr>
<th colspan='2' > Супы</th>
</tr>";
if ($menu_03 != 0)
{
$message .= "<tr >
<td >Суп овощной</td>
<th >$menu_03</th>
</tr>";
}
if ($menu_04 != 0)
{
$message .= "<tr >
<td >Похлёбка по-суворовски (рыбная)</td>
<th >$menu_04</th>
</tr>";
}
$message .= "<tr>
<th colspan='2' > Второе</th>
</tr>";
if ($menu_05 != 0)
{
$message .= "<tr>
<th align='left' > Бифштекс рубленый (без гарнира)</th>
<th >$menu_05</th>
</tr>";
if ($menu_06 != 0)
{
$message .= "<tr>
<td >+ греча</td>
<th >$menu_06</th>
</tr>";
}
if ($menu_07 != 0)
{
$message .= "<tr >
<td >+ рис</td>
<th >$menu_07</th>
</tr>";
}
$message .= "<tr>
<th align='left' > Рулет натуральный из курицы с зеленью (без гарнира)</th>
<th >$menu_08</th>
</tr>";
if ($menu_09 != 0)
{
$message .= "<tr>
<td >+ греча</td>
<th >$menu_09</th>
</tr>";
}
if ($menu_10 != 0)
{
$message .= "<tr >
<td >+ рис</td>
<th >$menu_10</th>
</tr>";
}
$message .= "
<tr >
<th colspan='2' >Выпечка, хлеб</th>
</tr>";
if ($menu_11 != 0)
{
$message .= "<tr>
<td >Плюшка сдобная с сахаром</td>
<th >$menu_11</th>
</tr>";
}
if ($menu_12 != 0)
{
$message .= "<tr>
<td >Хлеб ржаной</td>
<th >$menu_12</th>
</tr>";
}
if ($menu_13 != 0)
{
$message .= "<tr>
<td >Хлеб белый</td>
<th >$menu_13</th>
</tr>";
}
$message .= "</table>";
/* Собираем все части и отправляем письмо */
$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 г.

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

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





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

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