[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: отправка наemail всех отмеченных значений checkbox
kaylanger
Доброго времени суток! Дорогие коллеги! Хочу обратиться к Вам за помощью! конструирую сайт для кафе; в нем есть пункт "Сделать заказ". В этом пункте будет выведен список меню кафе в виде checkbox'ов и картинок напротив + ниже информация о заказчике (ФИО, Телефон, Адрес и т.д.).
Суть проблемы: Нужно, чтобы после нажатия кнопки "Подтвердить Заказ" - отправлялись на почту и выводились на экран только список отмеченных checkbox'сов + информация о заказчике.

Помогите чем можете, пожалуйста! Уже трое суток из интернета не вылезаю!

здесь php сценарий


<?php
if (isset($_POST['name1'])) {$name1 = $_POST['name1'];}
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['adress'])) {$adress = $_POST['adress'];}
if (empty($name1))
{
echo "<b class=style5>Не указано имя!<p>";
echo "<a href=order.htm class=style5>Вернуться к заполнению формы заказа</a>";
exit;
}
if (empty($phone))
{
echo "<b class=style5>Не указан телефон!<p>";
echo "<a href=order.htm class=style5>Вернуться к заполнению формы заказа</a>";
exit;
}
if (empty($adress))
{
echo "<b class=style5>Не указан адрес!<p>";
echo "<a href=order.htm class=style5>Вернуться к заполнению формы заказа</a>";
exit;
}
else
echo "<font class=style5>Получен заказ от: </font>".$_POST["name1"];
echo "<br><br><font class=style5>Контактный телефон: </font>".$_POST["phone"];
echo "<br><br><font class=style5>Адрес: </font>".$_POST["adress"];
echo "<br><br><font class=style5>Время доставки: </font>".$_POST["time"];
if (isset($_POST["order1"])) echo "<font class=style5>Ролл1";
if (isset($_POST["order2"])) echo "<font class=style5>Ролл2";
if($_POST['submit']) {
// $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменной $_POST['mess'] все аналогично
$name1 = substr(htmlspecialchars(trim($_POST['name1'])), 0, 30);
$phone = substr(htmlspecialchars(trim($_POST['phone'])), 0, 30);
$adress = substr(htmlspecialchars(trim($_POST['adress'])), 0, 30);
$address = "kaylager@mail.ru"; /*УКАЗАТЬ СВОЙ АДРЕС!*/
$headers = "Content-type: text/plain; charset = utf-8";
$subject = "Сообщение с вашего сайта";
$message = "Имя пославшего: $name1 \nТелефон: $Phone \nАдрес:: $adress\nМеню Заказа:: $order";
$verify = mail ($to, $subject, $message, $headers);}
if ($verify == 'true')
{
echo "<b class=style5>Спасибо! Скоро Вам перезвонят для подтверждения заказа.<p>";
echo "<a href=index.htm class=style5>Нажмите,</a> чтобы вернуться на главную страницу";
}
else
{
echo "<br><br><font class=style5>Ошибка. Сообщение не отправлено!";
}
?>


Здесь форма


<form action="action.php" method="post" id="form1">
<label><input
type="checkbox" name="order1" value="roll1"><img src="images/logo_mess.png">ролл1</label>
<label><input
type="checkbox" name="order2" value="roll2"><img src="images/logo_mess.png">ролл2<br><br></label>

<label>
Фамилия Имя Отчество<br><input type="text" name="name1" size="55"><br><font class="style1">Пример: Иванов Иван Иванович</font></label><br><br>
<label>
Контактный телефон<br><input type="text" name="phone" size="55"><br>
<font
class="style1">Пример: 8-987-654-32-10 </font></label><br><br>
Время доставки:<br>
<select
name="time">
<option
value="10.00-11.00">10.00-11.00</option>
<option
value="11.00-12.00">11.00-12.00</option>
<option
value="12.00-13.00">12.00-13.00</option>
<option
value="13.00-14.00">13.00-14.00</option>
<option
value="14.00-15.00">14.00-15.00</option>
<option
value="15.00-16.00">15.00-16.00</option>
<option
value="16.00-17.00">16.00-17.00</option>
<option
value="17.00-18.00">17.00-18.00</option>
<option
value="18.00-19.00">18.00-19.00</option>
<option
value="19.00-20.00">19.00-20.00</option>
<option
value="20.00-21.00">20.00-21.00</option>
<option
value="21.00-22.00">21.00-22.00</option>
<option
value="22.00-23.00">22.00-23.00</option>
</select><br><font
class="style1">Выбирите удобное для Вас время доставки</font><br><br>
<label>
Адрес доставки:<br><textarea name="adress" cols="50" rows="4"></textarea><br><font class="style1">Пример: ул. Советская, д.1, кв.1 </font></label><br><br>

<label><input
type="reset" name="reset1" value="Очистить форму"></label>
<label><input
type="submit" name="submit1" value="ПОДТВЕРДИТЬ ЗАКАЗ"></label>

</form>



Заранее спасибо!



Спустя 5 минут, 53 секунды (10.11.2011 - 00:55) Игорь_Vasinsky написал(а):
а говоришь
Цитата
Дорогие коллеги!


biggrin.gif

ну в чём проблема?
-отметил чекбоксы
- принял чекбоксы
- выбрал мыло
-отослал в цикле письма
- вывел кофе.

Спустя 8 минут, 49 секунд (10.11.2011 - 01:04) kaylanger написал(а):
Цитата (Игорь_Vasinsky @ 9.11.2011 - 21:55)
а говоришь
Цитата
Дорогие коллеги!


biggrin.gif

ну в чём проблема?
-отметил чекбоксы
- принял чекбоксы
- выбрал мыло
-отослал в цикле письма
- вывел кофе.

дело в том что как раз с циклом я и подзапарился. много форумов перелистал. и все что там советовали, мне не помогло. в добавок к этому у меня опасения, что в письме список отмеченных чекбоксов не будет отображаться (точнее его там вообще не будет).

может вы что-нибудь посоветуете?

Спустя 6 минут, 12 секунд (10.11.2011 - 01:10) Игорь_Vasinsky написал(а):
ну что я могу посоветовать?.. брать и делать, результаты с вопросами сюда.

а пока что я вижу - форма +обработчик

Цитата
и все что там советовали, мне не помогло.

а советовали я уверен много... а как пробывал?

Здесь не любят халявщиков.

Спустя 23 минуты, 25 секунд (10.11.2011 - 01:33) kaylanger написал(а):
Цитата (Игорь_Vasinsky @ 9.11.2011 - 22:10)
ну что я могу посоветовать?.. брать и делать, результаты с вопросами сюда.

а пока что я вижу - форма +обработчик

Цитата
и все что там советовали, мне не помогло.

а советовали я уверен много... а как пробывал?

Здесь не любят халявщиков.

Пробовал вывод выбранных элементов массива, предварительно присвоив каждому чекбоксу свое имя


if (isset($_POST['order'])) {

foreach($_POST['order'] as $key=>$value)) {
echo $value ."<br />";
}
}


не помогло. даже на экран не выводит.

нашел на другом форуме что-то подобное:

$selected_boxes = 'Выбранное меню:'."n".'<ul>';
foreach($_POST['order'] as $v) {$selected_boxes .= '<ul>'.$v.'</ul>'."n";}
$selected_boxes .= '</ul>'."n";

//след строка для проверки
echo($selected_boxes);


тоже не помогло.


Спустя 28 минут, 10 секунд (10.11.2011 - 02:01) imbalance_hero написал(а):
kaylanger
order1 - это order1.
order2 - это order2.
order[] - это массив, с каждым новым выбранным - новый ключ. smile.gif Используй для чекбокса именно массив. Прям так и писать name="order[]"

Спустя 24 минуты, 34 секунды (10.11.2011 - 02:26) kaylanger написал(а):
Мне тут на PHP.ru посоветовали исправить несколько ошибок, которые они обнаружили и вот что еще сделать:

Цитата
В общем ситуация такая: если чекбокс был отмечен - то он (его название и значение из атрибута value) будут присутствовать в массиве $_POST. Если его не отметили - его там не будет.
Соответственно, тебе нужно проверить, присутствуют ли в массиве $_POST нужные тебе элементы и для каждого присутствующего элемента дополнить содержимое письма тем, за что отвечает соответствующий элемент. Например, элемент order1 у тебя отвечает за Ролл1. Тогда где-то выше, чем строка, в которой создаётся текст письма ($message = ... ) тебе надо создать и заполнить твою переменную $order, которая должна содержать сам заказ. Например, это можно сделать так:

 <?php 
// ...
$order = '';
if(isset($_POST['order1']))
    $order .= "\nРолл 1";
if(isset($_POST['order2']))
    $order .= "\nРолл 2";
// ну и дальше там создание письма
$message = "Имя пославшего: $name1 \nТелефон: $phone \nАдрес:: $adress\nМеню Заказа:: $order";
// ...
?>



И вопрос: допустим я все исправил. если было отмечено, скажем так, 20 пунктов меню - то весь список из этих 20-ти пунктов должен будет отображаться в письме. Все верно?

Спустя 32 минуты, 54 секунды (10.11.2011 - 02:59) imbalance_hero написал(а):
А ты попробуй, программист же smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.