|
|
|
| Помогите с проблемой.
Вот есть у меня следующая форма:
<form action="<?= $_SERVER['SCRIPT_NAME'] ?>" method="POST">
...
Тип:
<div class="checkbox">
<input type=hidden name="type[1]" value="0"><input type=checkbox name="type[1]" value="1"> 1<br>
<input type=hidden name="type[2]" value="0"><input type=checkbox name="type[2]" value="1"> 2<br>
<input type=hidden name="type[3]" value="0"><input type=checkbox name="type[3]" value="1"> 3<br>
<input type=hidden name="type[4]" value="0"><input type=checkbox name="type[4]" value="1"> 4<br>
....
<input type=submit value="go" name="go">
</form>
|
Задача такая, если пользователь выбрал один и более флажков, его выбор отправляется мне по почте. Если выбор не сделан, выводится
сообщение с ошибкой.
Обработчик я написал такой
<?
...
if (@$_REQUEST['type'])
{}
else {
$action = "";
$error = $error."<LI>Вы должны выбрать что заказываете</LI>\n";
}
...
##различные проверки на ошибки в
...
if (empty($error) && empty($err))
{
if (@$_REQUEST['type']) {
foreach ($_REQUEST['type'] as $k=>$v) {
if($v) {
$k = array($k);
} } }
$valmail = "ad@ad.ru";
$all = "Выбраны следующие пункты $k";
$thm = "Письмо";
$headers = "From: admin@admin.ru";
mail($valmail, $thm, $all, $headers);
}
}
?>
|
То есть пользователь выбирает опции, нажимает на кнопку, отправляется сообщение. Но еслм пользователь выбирает несколько флажков приходит сообщение array. как исправить? | |
|
|
|
|
|
|
|
для: relikt
(23.11.2007 в 19:27)
| | Неужели этот скрипт такой сложный? Может есть другой вариан решения этой задачи? | |
|
|
|
|
|
|
|
для: Relikt
(23.11.2007 в 21:35)
| | type[1] - так это и есть массив! А вы что хотели | |
|
|
|
|
|
|
|
для: Relikt
(23.11.2007 в 21:35)
| | Если я вас правильно понял, на мой взгляд, добавление срытых полей в форме - лишнее.
Исходя из этого, измените свой цикл
<?
foreach ($_REQUEST['type'] as $k=>$v) {
if($v) {
$k = array($k);
} }
?>
|
на этот
<?
$str = '';
$i = 0;
foreach ($_POST['type'] as $k => $v)
{
$str .= $k.($i++ != count($_POST['type'])-1 ? ',' : '');
}
?>
|
Теперь, вставляйте переменную $str в нужное вам место.
<?
$all = "Выбраны следующие пункты $str";
?>
|
| |
|
|
|
|
|
|
|
для: Drago
(23.11.2007 в 21:59)
| | Спасибо, что помогли. Все работает так как я хотел. | |
|
|
|
|
|
|
|
для: relikt
(24.11.2007 в 11:36)
| | Попробовал прикрутить ваш код к более сложной системе чекбоксов:
<script>
function loock(e,f) {
for (i=0; i<f.length; i++) {
if (f[i].name != e.name && f[i].name.indexOf(e.name) != -1) {
if (e.checked) f[i].disabled = false;
else f[i].disabled = true;
}
}
}
</script>
<form>
<input type="checkbox" name="one" value="" onclick="loock(this, this.form)">One group<br>
<input type="checkbox" name="one1" value="" disabled>1<br>
<input type="checkbox" name="one2" value="" disabled>2<br>
<input type="checkbox" name="one3" value="" disabled>3<br>
<input type="checkbox" name="two" value="" onclick="loock(this, this.form)">Two group<br>
<input type="checkbox" name="two1" value="" disabled>4<br>
<input type="checkbox" name="two2" value="" disabled>5
</form>
|
Теперь у меня такой вопрос, а возможно ли теперь подогнать ваш вариант к этому примеру. Задача всё та же, но к переменным добавляются числа.
foreach ($_POST['type'] as $k=>$v)
{
$str .= $k.($i++ != count($_POST['type'])-1 ? ',' : '');
}
|
Можно ли этот кусок как то запустить в цикл, что бы к $_POST['type'] добавлялся номер? | |
|
|
|
|
|
|
|
для: relikt
(24.11.2007 в 22:15)
| | $_POST['type'] вы могли получить в первом случае, в этом случае у вас нет полей в форме с именем type. Укажите в форме имена как one[1], one[2] и т.д., и можете использовать этот же код, но для $_POST['one'], если вы затрудняетесь сделать иначе. Естественно таким же образом переименуйте и поля two. | |
|
|
|
|
|
|
|
для: sim5
(24.11.2007 в 22:26)
| | То есть так мне нужно писать для скрытых полей, а как обозначить их главный элемент? | |
|
|
|
|
|
|
|
для: relikt
(24.11.2007 в 22:15)
| | Вы можете попробовать, изменив форму следующим образом
<form method=post>
<input type="checkbox" name="group[1]" value="" onclick="loock(this, this.form)">One group<br>
<input type="checkbox" name="group[1][]" value="1" disabled>1<br>
<input type="checkbox" name="group[1][]" value="2" disabled>2<br>
<input type="checkbox" name="group[1][]" value="3" disabled>3<br>
<input type="checkbox" name="group[2]" value="" onclick="loock(this, this.form)">Two group<br>
<input type="checkbox" name="group[2][]" value="1" disabled>4<br>
<input type="checkbox" name="group[2][]" value="2" disabled>5
<input type=submit value="go" name="go">
</form>
|
применить цикл
<?
$str = '';
$i = 0;
foreach ($_POST['group'] as $k => $v)
{
$str .= "group $k(".implode(",", $_POST['group'][$k]).")".($i++ != count($_POST['group']) - 1 ? "," : "");
}
echo $str;
?>
|
| |
|
|
|
|
|
|
|
для: Drago
(24.11.2007 в 22:56)
| | Спасибо за помощь. Все работает. | |
|
|
|