|
|
|
| Добрый день. Помогите решить следующую проблему. Вот кусок кода:
<?php
if (!$_POST['go'] || $_POST['back'])
{
print "<form method='post'>
<input type='checkbox' name='add[]' value='1'><br>
<input type='checkbox' name='add[]' value='2'><br>
<input type='checkbox' name='add[]' value='3'><br>
<input type='submit' name='go' value='ок'>
</form>";
}
else
{
foreach ($_POST['add'] as $val)
{print $val."<br>";}
print "<form method='post'><input type='submit' name='back' value='назад'></form>";
}
?>
|
Суть проблемы в следующем. Если чекбокс не выбран , то передачи переменной не происходит и соответственно после обработки скрипта браузер выдает следующее сообщение: Warning: Invalid argument supplied for foreach() in Y:\home\10.200.33.104\www\test\index.php on line 21.
Помогите мне в обработчике инициализировать массив в который будет входить столько же элементов, сколько и чекбоксов в отправляющей форме. | |
|
|
|
|
|
|
|
для: maxtet
(22.10.2008 в 11:54)
| | вариант вставить заглушку <input type='hidden' name='add[]' value=''> после чекбоксов и иметь в виду, что последний индекс в массиве лишний - не подойдет? | |
|
|
|
|
|
|
|
для: maxtet
(22.10.2008 в 11:54)
| | а может проще проверить isset'ом этот $_POST['add']? зачем делать пустой массив, с N элементами, если он не будет использоваться ни для чего, кроме как "пройтись по нему foreach'ем" | |
|
|
|
|
|
|
|
для: mechanic
(22.10.2008 в 12:43)
| | Всё дело в том, что пустой массив будет в дальнейшем использоваться в комбинации с другими непустыми массивами. | |
|
|
|
|
|
|
|
для: maxtet
(22.10.2008 в 12:50)
| | и количество чекбоксов - не константа?
тогда добавляем счетчик при создании чекбоксов, затем hidden-полем передаем его (а это размерность массива $add) в обработчик, а в обработчике циклом делаем массив пустым, но с достаточным количеством элементов.
Хотя все это как-то дико звучит. | |
|
|
|
|
|
|
|
для: DJ Paltus
(22.10.2008 в 12:59)
| | Кол-во чекбоксов - не константа, я привел данный пример для того, что бы реализовать передачу данных через чекбоксы. Кол-во переданных переменных должно соответствовать кол-ву чекбоксов в форме отправителя. Если же переменная не передаётся (чекбокс не выбран), то в обработчике должна создаваться пустая переменная. | |
|
|
|
|
|
|
|
для: maxtet
(22.10.2008 в 12:50)
| | а надо избавляться от таких связываний | |
|
|
|
|
|
|
|
для: maxtet
(22.10.2008 в 11:54)
| |
$my_array_size = 10;//размер массива
$new_array = array_fill('',0,$my_array_size);
if(is_array($_POST['add']))
foreach($_POST['add'] as $k=>$v)
$new_array[$k] = $v;
echo '<pre>';
print_r($new_array);
echo '</pre>';
|
если у тя число этих чекбоксов, определяется не "на лету", то нет смысла чекбоксы массивом делать, но это на мой взгляд | |
|
|
|