I live ExBB and CMS Limbo! » Форумы и сайты » Записная книжка PHP » Проверка checkbox на форме

Страниц (1): [1]
 

1. технарь - 21 января 2012 — 15:00 - перейти к сообщению
Хотелось бы отметить, что многие изначально совершают ошибки и пишут не правильно html checkbox. То есть начитавшись в Интернет информации 10 летней давности пишут всякую охинею. Согласно одного из последних строгих DOCTYPE, который пытается нас сопроводить в эпоху HTML5 checkbox правильно пишется следующим образом:
code:
<input type="checkbox" name="checkme" checked="checked" />


Обратите внимание, id в input объекте нет! Согласно последним стандартам к таким html объектам нужно обращаться через свойство name. Также обратите внимания, что нет и value, при type="checkbox" это значение не прописывается. Оно по умолчанию =0. То есть нет смысла его указывать, если не требуется выставить, что либо принудительно.

Речь идет о стандарте: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">, в других стандартах DOCTYPE данный объект может писаться по другому. Смотрите внимательно спецификацию.


Можно сделать так. Перед тегом <input type="checkbox"> поместить тег <input type="hidden"> с тем же самым значением параметра «name»:
code:
<form …>

<input type="hidden" name="checkme" value="0">
<input type="checkbox" name="checkme" value="1">

</form>


Теперь если checkbox установлен, в переменной $checkme передастся «1», в противном случае «0». Однако, если у вас будет 10 checkbox`ов, то будете уже не приятно удивлены, как быстро начнет увеличиваться ваш html код, а некоторые браузеры покрутят пальцем возле вашего виска.

Правильно делать так...
Для начала, нужно форму сделать согласно стандартам консорциума W3C

Код html:
code:
<form action="page.php" method="post">
<input type="checkbox" name="checkme" checked="checked" /> <- правильно пишем input согласно стандартам
</form>


Код PHP:
code:
function checkbox_verify($_name)
{
$result=0;// обязательно прописываем, чтобы функция всегда возвращала результат
// проверяем, а есть ли вообще такой checkbox на html форме, а то часто промахиваются
if (isset($_REQUEST[$_name]))
{ if ($_REQUEST[$_name]=='on') { $result=1; } else { $result=0; }
}
return $result;
}


В итоге, вызов получается очень простым:
code:
echo checkbox_verify('checkme');

Powered by ExBB v1.1.180311