Настройка формы отправки. Как убрать лишние поля?

igorrostov

Новичок
Настройка формы отправки. Как убрать лишние поля?

Здравствуйте.
Начал изучать PHP и столкнулся со следующнй проблемой:
В форме у меня более 100 полей. Посетители выбирают максимум 10, но на почту приходит весь список всех наименований. Приходится выбирать из списка. Использовал оператор if но он не работает.
Вот кусок кода:

$AdminMessage .= "<br><font color=green>ACACIA Акация, Мимоза:</font> $C1\n";
$AdminMessage .= "<br><font color=green>ACHILLEA Тысячелистник:</font> $C2\n";
$AdminMessage .= "<br><font color=green>ACACIA ACONITUM Аконит, Борец :</font> $C3\n";
$AdminMessage .= "<br><font color=green>AGAPANTHUS Агапантус:</font> $C4\n";
$AdminMessage .= "<br><font color=green>AGERATUM Долгоцветка:</font> $C5\n";
$AdminMessage .= "<br><font color=green>ALCHEMILLA Манжетка:</font> $C6\n";
и так до 138.


Как сделать, чтобы когда посетитель выбрав 10 акаций и десять роз на почту не приходили все наименования.


Вот адес формы:
http://www.2728182.ru/1/form.php
Заранее спасибо!!
 

alekciy

Новичок
igorrostov
>В форме у меня более 100 полей.
Алгоритм достаточно стандартен...
При получении формы скрипт mail_anketa.php, должен перебрать элементы массива $_POST (через foreach к примеру), и включать в отчет, оправляемый по почте только те элементы, которые не являются пустыми (empty), через проверку их через тот же if.
 

igorrostov

Новичок
Автор оригинала: alekciy
igorrostov
>В форме у меня более 100 полей.
Алгоритм достаточно стандартен...
При получении формы скрипт mail_anketa.php, должен перебрать элементы массива $_POST (через foreach к примеру), и включать в отчет, оправляемый по почте только те элементы, которые не являются пустыми (empty), через проверку их через тот же if.
Не могли бы Вы мне написать кусок такого кода?
 

alekciy

Новичок
Что-то в духе:
PHP:
for ($i = 1; $i <=count($_POST);$i++) {
$temp = "<br><font color=green>C$i =</font> $_POST[C$i]\n";
if ($_POST[C$i] != null) {
$AdminMessage .= $temp;
};
};
 

KeTal

Guest
Попробуйте if (trim($_POST[C$i])) {
И echo $_POST[C$i], посмотрите, что там, чтобы убедиться.
 

uliss

Новичок
А не проще в форме дать всем цветочным полям имена типа:
<input type="text" name="flower[rose]" value="">
<input type="text" name="flower[tulip]" value="">

и т.д

А потом делать
foreach($_REQUEST['flower'] as $fl => $num){
//код
}
 

igorrostov

Новичок
Автор оригинала: alekciy
Что-то в духе:
PHP:
for ($i = 1; $i <=count($_POST);$i++) {
$temp = "<br><font color=green>C$i =</font> $_POST[C$i]\n";
if ($_POST[C$i] != null) {
$AdminMessage .= $temp;
};
};
Этот код надо вставить перед
списком
$$AdminMessage.......?
Вставил - не получается. Выдаёт ошибку.

Пробывал так- всё равно.

if ($С4 != null) {
$AdminMessage .= "<br><font color=green>AGAPANTHUS Агапантус:</font> $C4\n";
};
 

alekciy

Новичок
igorrostov
Ну если сам довести не можешь, ладно, привожу точно отработанный код:
PHP:
<?php
for ($i = 1; $i <= count($_POST);$i++) { 
	$temp = "<br><font color=green>C$i =</font> ".$_POST["C$i"]."\n"; 
	if ($_POST["C$i"] != null) { 
		$AdminMessage .= $temp; 
	}; 
};
print $AdminMessage;
?>
uliss
>А не проще в форме дать всем цветочным полям имена типа:
Попробуй реализовать предложенный тобою способ на практике. Так же неплохо ещё раз перечитать справку по PHP.

>Может все-таки isset($_POST['FIELD'])
Нет, опять мимо. Внимательно посмотри в мануал, что делает эта функция.
Ещё лучше проведи практический опыт ;-)
 

master_x

Pitavale XXI wieku
alekciy
ну а в твоем коде лучше вообще empty() использовать если не isset(). Так что мануал читаешь ты. OK?
 

alekciy

Новичок
master_x
Я его и так постоянно читаю, ясно? isset() я вообще не предлагал. Про empty() знаю прекрасно:

if (!empty($_POST["C$i"])) {

Но не вижу принципиальной разницы/преимущества перед первым вариантом.

-~{}~ 18.03.06 23:08:

Хотя конечно признаю, что второй вариант более предпочтителен поскольку проигнорирует поле, в которое пользовать введет ноль. Первый вариант включит этот ноль в отчет.

-~{}~ 18.03.06 23:10:

Но это уже вопрос проверки полученных данных от пользователя. Бог знает, ЧТО он может оправить в форме.
 

uliss

Новичок
Автор оригинала: alekciy
uliss
>А не проще в форме дать всем цветочным полям имена типа:
Попробуй реализовать предложенный тобою способ на практике. Так же неплохо ещё раз перечитать справку по PHP.

>Может все-таки isset($_POST['FIELD'])
Нет, опять мимо. Внимательно посмотри в мануал, что делает эта функция.
Ещё лучше проведи практический опыт ;-)
1. Не раз реализовывал
2. А ты включи error_reporting(E_ALL)
и сравни свой и мой примеры :)

Ты когда нибудь такую ошибку встречал?
Undefined index: N script.php on line N
 

alekciy

Новичок
1) Приведи тогда код для ДАННОГО примера по предложенному тобою способу.
2) И зачем? Что бы в браузер получать E_NOTICE? Излишнее это.

3) Нет.

-~{}~ 19.03.06 15:13:

4) Кстати не забудь еще страницу с формой изменить ;-)
 

Фанат

oncle terrible
Команда форума
И зачем? Что бы в браузер получать E_NOTICE? Излишнее это.
alekciy
чтобы не получать в браузер E_NOTICE, надо переменные инициализировать.
а не отображение ошибок отключать.
ты путаешь причину со следствием.
 

alekciy

Новичок
На сколько я знаю, в PHP инициирование/объявление переменных не обязательно. В контексте данной темы я вообще не пойму, зачем это нужно. Что бы увидеть, что часть переменных не инициирована? Но это и так ясно.
 

master_x

Pitavale XXI wieku
alekciy
лучше просто прислушаться к совету и впредь помолчать, если не уверен.
 

alekciy

Новичок
В приведенном коде я уверен. Совет всегда готов выслушать. Однако совет совету рознь. Кроме того трудно следовать совету, если ускользает смысл совета. Или Вы за бездумное следование рекомендациям и слепом следовании за авторитетами?
 

alekciy

Новичок
Нет, я не считаю их излишними. Я просто не улавливаю какую роль они сыграют в данной проблеме.
Хотя мы уже давно свалились во флейм....
 
Сверху