Как читать, если флажок установлен в PHP?
Как читать, если флажок установлен в PHP?
15 ответов:
Если Ваша HTML-страница выглядит так:
<input type="checkbox" name="test" value="value1">
после отправки формы вы можете проверить ее с помощью:
isset($_POST['test'])
или
if ($_POST['test'] == 'value1') ...
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" 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(...
пусть ваш 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 }
вы можете проверить соответствующее значение как заданное и непустое в массиве $_POST или $_GET в зависимости от действия вашей формы.
т. е.: с должности, используя
name
из " теста "(т. е.:<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, но применяется для всё.
удачи :)
чтобы проверить, установлен ли флажок, используйте пустая()
когда форма будет отправлена, флажок будет всегда быть установлен, потому что ВСЕ переменные будут отправлены с формой.
проверьте, установлен ли флажок с пустым следующим образом:
//Check if checkbox is checked if(!empty($_POST['checkbox']){ #Checkbox selected code } else { #Checkbox not selected code }
$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']?>>
вы можете сделать это с коротким, если:
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
или с новым PHP7
Null coalescing operator
$check_value = $_POST['my_checkbox_name'] ?? 0;
я использовал этот трюк в течение нескольких лет и он отлично работает без каких либо проблем для checked или unchecked состояние флажка при использовании с 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 для базы данных.
<?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>