Чекбокс - элемент формы, который позволяет отмечать галочкой интересующий пункт пользователя. Разберем способы взаимодействия чекбоксов с формой (выгрузка с отмеченными галочками) + массив чекбоксов в PHP при отправке формы.
Немного теории чекбоксов
- Обычный чекбокс задается так: <input type="checkbox" name="news" value="Да" > Подписка
- Чтобы чекбокс был нажатым, достаточно поставить атрибут checked="checked".
- Чтобы понять, что чекбокс передается при POST отправке формы достаточно сделать так: if (isset($_POST['news'])) { echo $_POST['news']; } В этом случае, если галочка отмечена, выведется значение Да.
Теперь представим, что у нас много чекбоксов, для универсальности работы, добавим в них одно имя в виде массива news_add[]:
<form action="" method="post">
<input type="checkbox" name="news_add[]" value="1" <?php echo ac_checbox($_POST["news_add"], '1'); ?> > 1<br />
<input type="checkbox" name="news_add[]" value="2" <?php echo ac_checbox($_POST["news_add"], '2'); ?> > 2<br />
<input type="checkbox" name="news_add[]" value="3" <?php echo ac_checbox($_POST["news_add"], '3'); ?> > 3<br />
<input type="submit" value="Подтвердить" name="addcatbutfsdfs">
</form>
Теперь имя чекбоксов в массиве и если мы передадим их значения с формы, то нужно как-то узнать, значение какого чекбокса было нажато, для этого используем for цикл:
<?php
//обрабатываем какие чекбоксы нажаты, а какие нет
//имя чекбоксов в виде массива news_add
if (isset($_POST['addcatbutfsdfs'])) {
$news_add = $_POST["news_add"];
$news_addthis = '';
for($a = 0; $a<count($news_add); $a++) {
//записываем все нажатые чекбоксы в строку через ## Например: 1##2##
$news_addthis .= $news_add[$a].'##';
}
echo 'Нажаты: '.$news_addthis; }
?>
Таким образом, за счет этого обработчика мы легко можем определить через цикл нажатые галочки. В том же цикле можно сразу произвести нужные действия с выбранными чекбоксами.
Также вы заметили функцию ac_checbox(), она поможет определить при каждой POST отправке нажатый чекбокс (опять же через цикл) и выделить его галочкой:
<?php
//отмечаем нажатый чекбокс
function ac_checbox($ac_post, $ac_value) {
for($a = 0; $a<count($ac_value); $a++) {
if($ac_post[$a] == $ac_value) return ' checked="checked" ';
} }
?>
В функцию передаются 2 параметра: POST массива чекбоксов и значение (value), которое надо проверить на "выбранность" пользователем.
Добавить комментарий