Відповіді:
Якщо ваша 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"]
's)?
Використовуючи прапорці як масив:
<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 та Database.
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. Тоді просто використовуйте змінну статусу $ для бази даних.
Щоб встановити прапорець, поставте прапорець ()
Коли форма буде подана, прапорець ЗАВЖДИ буде встановлений, тому що ВСІ змінні POST будуть надсилатися разом із формою.
Поставте прапорець, чи встановлено прапорець із порожнім:
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
Ви можете перевірити відповідне значення як встановлене і не порожнє в масиві $ _POST або $ _GET залежно від дії вашої форми.
тобто: із формою POST, використовуючи name
"тест" (тобто:, <input type="checkbox" name="test">
ви б використовували:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
Дізнайтеся про те, isset
що є вбудованою "функцією", яку можна використовувати, якщо заяви заявляють, чи використовувалась чи встановлена змінна
Приклад:
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/cked/
checked( mixed $checked, mixed $current = true, bool $echo = true )
Опис Порівняє перші два аргументи та якщо вони ідентичні позначкам, як перевірено
Параметри $ перевірено (змішано) (Обов’язково) Одне із значень для порівняння
$ current (змішане) (Необов’язково) (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']);
}
?>