Ответы:
Если ваша HTML-страница выглядит так:
<input type="checkbox" name="test" value="value1">
После отправки формы вы можете проверить ее с помощью:
isset($_POST['test'])
или
if ($_POST['test'] == 'value1') ...
on
, когда они отмечены. Поэтому для совместимости проще в использовании isset($_POST['checkboxName'])
.
value1
если флажок установлен. Если это не проверено, $_POST['test']
просто не существует.
Zend Framework использует полезные опции для галочек, которые вы также можете сделать самостоятельно:
Каждый сгенерированный флажок связан со скрытым полем с тем же именем, помещенным непосредственно перед флажком, и со значением «0». Затем, если ваш флажок в качестве значения «1», вы всегда получите значение «0» или «1» в результате GET или POST
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
input[type="checkbox"]
одно)?
При использовании флажков в качестве массива:
<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">
Вы должны использовать in_array()
:
if(in_array('Orange', $_POST['food'])){
echo 'Orange was checked!';
}
Не забудьте проверить, что массив установлен первым, например:
if(isset($_POST['food']) && in_array(...
foreach ($_POST['food'] as $selected_food)
работать на проверенных один хорошо, спасибо
Пусть ваш HTML для вашего флажка будет как
<input type="checkbox" name="check1">
Затем после отправки формы вам необходимо проверить, как
if (isset($_POST['check1'])) {
// Checkbox is selected
} else {
// Alternate code
}
Предполагая, что это check1
должно быть ваше имя флажка. И если ваш метод отправки формы, GET
то вам нужно проверить с $_GET
переменными, такими как
if (isset($_GET['check1'])) {
// Checkbox is selected
}
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
Я использовал этот трюк в течение нескольких лет, и он отлично работает без каких-либо проблем с состоянием отмеченных / не отмеченных флажков при использовании с PHP и базой данных.
HTML-код: (для страницы добавления)
<input name="status" type="checkbox" value="1" checked>
Подсказка: снимите флажок, если вы хотите, чтобы он был отключен по умолчанию
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 для базы данных.
Чтобы проверить, установлен ли флажок, используйте empty ()
Когда форма отправлена, флажок ВСЕГДА будет установлен, потому что ВСЕ переменные POST будут отправлены вместе с формой.
Проверьте, отмечен ли флажок пустым, следующим образом:
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
Вы можете проверить соответствующее значение как установленное и непустое в массиве $ _POST или $ _GET в зависимости от действия вашей формы.
то есть: с формой POST, использующей name
«test» (то есть <input type="checkbox" name="test">
, вы бы использовали:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
Узнать о isset
какая встроенная «функция» может использоваться в операторах if, чтобы определить, была ли переменная использована или установлена
Пример:
if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}
Ну, приведенные выше примеры работают только тогда, когда вы хотите ВСТАВИТЬ значение, бесполезно для ОБНОВЛЕНИЯ разных значений для разных столбцов, поэтому вот мой маленький трюк для обновления:
//EMPTY ALL VALUES TO 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 {
//UPDATE only the values checked
$queryMU ='UPDATE '.$db->dbprefix().'settings SET '.$checkU.'= 1';
$stmtMU = $db->prepare($queryMU);
$stmtMU->execute();
} catch(PDOException $e) {
$msg = 'Error: ' . $e->getMessage();}
}
}
<input type="checkbox" value="menu_news" name="check_menus[]" />
<input type="checkbox" value="menu_gallery" name="check_menus[]" />
....
Секрет в том, чтобы сначала обновить все ЗНАЧЕНИЯ (в данном случае на 0), и, поскольку он будет отправлять только проверенные значения, это означает, что все, что вы получите, должно быть установлено в 1, поэтому для всего, что вы получаете, установлено в 1.
Примером является PHP, но он применим ко всему.
Радоваться, веселиться :)
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
Оценка короткого замыкания позаботится о том, чтобы вы не your_checkbox_name
получили доступ, когда она не была отправлена.
Минималистическая логическая проверка с сохранением положения переключателя
<?php
$checked = ($_POST['foo'] == ' checked');
?>
<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
<?php
if (isset($_POST['add'])) {
$nama = $_POST['name'];
$subscribe = isset($_POST['subscribe']) ? $_POST['subscribe'] : "Not Checked";
echo "Name: {$nama} <br />";
echo "Subscribe: {$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" /> News <br />
<input type="submit" name="add" value="Save" />
</form>
в BS3 можно поставить
<?php
$checked="hola";
$exenta = $datosOrdenCompra[0]['exenta'];
var_dump($datosOrdenCompra[0]['exenta']);
if(isset($datosOrdenCompra[0]['exenta']) and $datosOrdenCompra[0]['exenta'] == 1){
$checked="on";
}else{
$checked="off";
}
?>
<input type="checkbox" id="exenta" name="exenta" <?php echo $checked;?> > <span class="label-text"> Exenta</span>
Обратите внимание на использованиеisset($datosOrdenCompra[0]['exenta'])
WordPress имеют checked()
функцию. Ссылка: https://developer.wordpress.org/reference/functions/checked/
checked( mixed $checked, mixed $current = true, bool $echo = true )
Описание Сравнивает первые два аргумента и, если они совпадают, отмечены
Параметры $ проверено (смешано) (обязательно) Одно из значений для сравнения
$ current (mixed) (необязательно) (true) Другое значение для сравнения, если не просто true Значение по умолчанию: true
$ echo (bool) (необязательно): выводить или возвращать строку Значение по умолчанию: true
Вернуть html атрибут #Return (string) или пустую строку
<?php
if(isset($_POST['nameCheckbox'])){
$_SESSION['fr_nameCheckbox'] = true;
}
?>
<input type="checkbox" name="nameCheckbox"
<?php
if(isset($_SESSION['fr_nameCheckbox'])){
echo 'checked';
unset($_SESSION['fr_nameCheckbox']);
}
?>