Как прочитать, установлено ли значение в чекбоксе на PHP?
Ответ 1
Если ваша HTML-страница выглядит так:
<input type="checkbox" name="test" value="value1">,
после отправки формы вы можете проверить ее так:
isset($_POST['test'])
или
if ($_POST['test'] == 'value1') ...
Ответ 2
Zend Framework использует хороший хак для чекбоксов, который вы также можете сделать сами. Каждый сгенерированный флажок ассоциируется с одноименным скрытым полем, расположенным непосредственно перед флажком и имеющим значение «0». Тогда, если ваш флажок имеет значение «1», вы всегда получите значение «0» или «1» в результирующем GET или POST.
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
Ответ 3
При использовании флажков в виде массива:
<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">,
вам следует использовать in_array():
if(in_array('Orange', $_POST['food'])){
echo 'Orange был выбран!';
}
Не забудьте сначала проверить, что массив установлен, например:
if(isset($_POST['food']) && in_array(...
Ответ 4
Пусть ваш html для вашего чекбокса будет похож на:
<input type="checkbox" name="check1">
Затем, после отправки формы, вам нужно проверить его:
if (isset($_POST['check1'])) {
// флажок установлен
} else {
// альтернативный вариант
}
Предположим, что check1 должно быть именем вашего флажка. А если метод отправки вашей формы - GET, то вам нужно проверить переменные $_GET, например так:
if (isset($_GET['check1'])) {
// флажок установлен
}
Ответ 5
Я использую этот трюк уже несколько лет, и он отлично работает без каких-либо проблем для отмеченного состояния флажка при использовании с PHP и базой данных.
HTML код: (для страницы добавления):
<input name="status" type="checkbox" value="1"
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>
Код PHP (используется для добавления/редактирования страниц):
$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}
Подсказка: значение всегда будет пустым, если только пользователь не проверил его. Итак, у нас уже есть PHP-код, чтобы перехватить его и сохранить значение равным 0. Затем просто используйте переменную $status для работы с базой данных.
Ответ 6
Но приведенные выше примеры работают только тогда, когда вы хотите использовать INSERT значение, и не полезны для UPDATE различных значений в разных столбцах, поэтому вот мой маленький трюк:
// Установка всех значений в 0
$queryMU ='UPDATE '.$db->dbprefix().'settings SET menu_news = 0, menu_gallery = 0, menu_events = 0, menu_contact = 0';
$stmtMU = $db->prepare($queryMU);
$stmtMU->execute();
if(!empty($_POST['check_menus'])) {
foreach($_POST['check_menus'] as $checkU) {
try {
// обновление только выбранных значений
$queryMU ='UPDATE '.$db->dbprefix().'settings SET '.$checkU.'= 1';
$stmtMU = $db->prepare($queryMU);
$stmtMU->execute();
} catch(PDOException $e) {
$msg = 'Error: ' . $e->getMessage();}
}
}
HTML:
<input type="checkbox" value="menu_news" name="check_menus[]" />
<input type="checkbox" value="menu_gallery" name="check_menus[]" />
Секрет в том, чтобы сначала обновить все VALUES (в данном случае в 0), а поскольку отправляются только проверенные значения, это означает, что все, что вы получите, должно быть установлено в 1, поэтому все, что вам необходимо, устанавливается во флажках в значение 1.
Пример для PHP, но он применим для всех языков.
Ответ 7
Можно использовать следующий код:
<?php
if (isset($_POST['add'])) {
$nama = $_POST['name'];
$subscribe = isset($_POST['subscribe']) ? $_POST['subscribe'] : "Не выбрано";
echo "Имя: {$nama} <br />";
echo "Описание: {$subscribe}";
echo "<hr />";
}
?>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST" >
<input type="text" name="name" /> <br />
<input type="checkbox" name="subscribe" value="news" />Новости<br />
<input type="submit" name="add" value="Save" />
</form>

Web