如何在PHP中检查checkbox?
如何在PHP中检查checkbox?
如果您的HTML页面如下所示:
<input type="checkbox" name="test" value="value1">
提交表格后,您可以通过以下方式进行检查:
isset($_POST['test'])
要么
if ($_POST['test'] == 'value1') ...
Zend Framework在checkbox上使用了一个很好的方法,你也可以自己做:
生成的每个checkbox都与一个隐藏的相同名称的字段相关联,放置在checkbox之前,值为“0”。 然后,如果您的checkbox的值为“1”,那么您将始终在得到的GET或POST中获得“0”或“1”值
<input type="hidden" name="foo" value="0" /> <input type="checkbox" name="foo" value="1">
将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(...
让你的checkbox的HTML会像
<input type="checkbox" name="check1">
然后提交表单后,您需要检查
if (isset($_POST['check1'])) { // Checkbox is selected } else { // Alternate code }
假设check1
应该是您的checkbox名称。如果您的表单提交方法是GET
那么您需要检查$_GET
variables
if (isset($_GET['check1'])) { // Checkbox is selected }
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
您可以根据表单的操作,在$ _POST或$ _GET数组中检查相应的值是否设置为非空值。
即:使用name
为“test”的POST表单(即: <input type="checkbox" name="test">
,您可以使用:
if(isset($_POST['test']) { // The checkbox was enabled... }
了解isset
,这是一个内置的“函数”,可用于if语句,以判断variables是否已被使用或设置
例:
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[]" />
….
秘密就是首先更新所有的VALUES(在这种情况下为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']?>>
您可以在短时间内完成:
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
或者使用新的PHP7 Null coalescing operator
$check_value = $_POST['my_checkbox_name'] ?? 0;
要检查checkbox是否被选中,请使用empty()
当表单被提交时,checkbox将始终被设置,因为所有POSTvariables将与表单一起发送。
检查checkbox是否勾选为空,如下所示:
//Check if checkbox is checked if(!empty($_POST['checkbox']){ #Checkbox selected code } else { #Checkbox not selected code }
我已经使用了这个技巧好几年了,在使用PHP和数据库的时候,对于checked / uncheckedcheckbox状态没有任何问题。
HTML代码:(对于添加页面)
<input name="status" type="checkbox" value="1" checked>
提示:如果你想在默认情况下显示为“未选中”,请移除“checkbox”
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.然后,只需使用数据库的$状态variables。
<?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']); } ?>