Проверка checkbox при сабмите формы

voodoo911
На сайте с 11.03.2008
Offline
157
859

Вопрос конечно глупый, но подскажите:

Есть форма POST с чекбоксом

<input name="check_name" />

Если чекбокс включен, то в $_POST['check_name'] передается 'on', но если чекбокс отключен, то $_POST['check_name'] не передается вообще. У меня в форме оооочень много чекбоксов, чтоесть поименная проверка не очень подходит.

Как решить задачу? ( Гугля ничего толкового не подсказала )

Спасибо

4arger
На сайте с 17.12.2008
Offline
95
#1

может как-то так:

<input name="check_name[]" />

а потом цикл:

<?php

foreach( $_POST['check_name'] as $val ) {

/* */

}

?>

voodoo911
На сайте с 11.03.2008
Offline
157
#2
4arger:
может как-то так:
<input name="check_name[]" />
а потом цикл:
<?php
foreach( $_POST['check_name'] as $val ) {
/* */
}
?>

Массив тоже не передает. Короче нашел временное решение типа

<input type="hidden" name="check_name" value="off" />

<input type="checkbox" name="check_name" />

4arger
На сайте с 17.12.2008
Offline
95
#3

а не проще при обработке делать:

<?php

$val1 = ( $_POST['check_name1'] == 'on' ? 'on' : 'off' );

$val2 = ( $_POST['check_name2'] == 'on' ? 'on' : 'off' );

..............

..............

$val100 = ( $_POST['check_name100'] == 'on' ? 'on' : 'off' );

?>

voodoo911
На сайте с 11.03.2008
Offline
157
#4

ИМХО не самый гибкий вариант.

4arger
На сайте с 17.12.2008
Offline
95
#5
voodoo911:
ИМХО не самый гибкий вариант.

почему? вам все равно POST необходимо проверять.

voodoo911
На сайте с 11.03.2008
Offline
157
#6

я юзаю worpress конструкцию

foreach($_POST as $key => $value){

update_option($theme_prefix.$key, $value);

}

То-есть меня интересует только если значение 'on', другие отсекаются. Или я что-то пропустил ?

4arger
На сайте с 17.12.2008
Offline
95
#7

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

как у вас устроено я не в курсе, просто свое мнение озвучил...

D
На сайте с 09.07.2011
Offline
28
#8

попробуйте форму описывать вот таким образом:

<input type="hidden" name="is_active" value="0"/><input name="is_active" value="1" checked="checked" type="checkbox"/>

тогда в любом случае в форме будет приходить is_active, а значение 1 или 0 в зависимости от того будет у вас стоят крыжик или нет :)

D0
На сайте с 15.12.2009
Offline
59
#9

Однажды сталкивался точно с такой же проблемой. Как обработать чекбокс, если он не передается :)

Не знаю какая именно у тебя задача, но я свою решил радиокнопками.

Две кнопки место занимают не много, обрабатываются очень отлично.

Жизнью правит случай, а не мудрость.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий