Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > передача состояния checkbox


Автор: veterrus 14.8.2009, 11:58
Помогите кто может!
Не могу понять почему не работает код:

Есть три файла.

в первом файле есть checkbox:
<input type="checkbox" name="field_first" value=first>

во втором есть формы которые я заполняю.

в третьем файле идет проверка состояния checkbox из первого файла и обработка формы из второго:
if ( ! isset($_POST["field_first"]) ){

Действие1

} else {

Действие2

}

по цепочке через hidden, передаеться в третий файл:
echo "<input type=\"hidden\" name=\"field_first\" value=$_POST["field_first"]>";


По идее если checkbox не отмечен должно выполняться Действие1,
а выполняеться Действие2, или я что то напутал с isset или теряется во втором файле состояние checkbox?
Как передать состояние checkbox через несколько файлов?

Заранее спасибо за помощь


Автор: w03zd8rc 14.8.2009, 12:22
а не проще ли в адресной строке состояние передавать тогда?

Автор: youri 14.8.2009, 12:22
а у тебя что мастер, что ты checkbox'ы передаешь?

Автор: skyboy 14.8.2009, 13:54
Цитата(veterrus @  14.8.2009,  10:58 Найти цитируемый пост)
По идее если checkbox не отмечен должно выполняться Действие1,

если у тебя checkbox отмечен, то будет формироваться такой код:
Код

<input type="hidden" name="field_first" value=first>

если у тебя checkbox не отмечен, то будет формироваться такой код:
Код

<input type="hidden" name="field_first" value=>

что, кстати, некорректно.
тебе надо значение value заключать в кавычки, как и name, тогда у тебя было бы корректное:
Код

<input type="hidden" name="field_first" value="">

но твоя проблема не в этом. а в том, что это скрытое поле с именем field_first передается в любом случае(с value или без него)!
и isset($_POST["field_first"]) всегда будет возвращать true. тебе надо проверять не наличие $_POST["field_first"], а содержимое этой переменной:
Код

if ( $_POST["field_first"] != "" ){ ....
//или 
if ( !empty($_POST["field_first"]) ){ ....

Автор: bars80080 14.8.2009, 13:54
ерунда, вы бы нарисовали себе эту цепочку и прояснили бы действия элементов

с первого файла во второй ничего не передаётся, если чекбокс не нажат, но во втором у вас введено поле field_first, которое по любому будет передано дальше. это же поле hidden, переменная будет создана, даже с пустым значением, если в поле ничего не введено

в таком случае для успешности проверки в третьем файле надо указать: if (empty($_POST["field_first"]) ){

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)