如何在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那么您需要检查$_GETvariables

 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']); } ?>