如何读取PHP中是否选中复选框?
如何读取PHP中是否选中复选框?如果您的HTML页面如下所示:如何读取PHP中是否选中复选框?,php,html,forms,post,checkbox,Php,Html,Forms,Post,Checkbox,如何读取PHP中是否选中复选框?如果您的HTML页面如下所示: <input type="checkbox" name="test" value="value1"> 或 根据表单的操作,您可以在$\u POST或$\u GET数组中将相应的值检查为已设置且非空 i、 例如:对于使用“test”(即:)的名称的POST表单,您可以使用: if(isset($_POST['test']) { // The checkbox was enabled... } Zend Fram
<input type="checkbox" name="test" value="value1">
或
根据表单的操作,您可以在$\u POST或$\u GET数组中将相应的值检查为已设置且非空 i、 例如:对于使用“test”(即:
)的名称的POST表单,您可以使用:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
Zend Framework对复选框进行了很好的破解,您也可以自己进行:
生成的每个复选框都与一个同名的隐藏字段相关联,该字段位于复选框的正前方,值为“0”。如果您的复选框为值“1”,则在生成的get或POST中始终会得到“0”或“1”值
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
让您的复选框的html如下
<input type="checkbox" name="check1">
假设check1
应该是您的复选框名称。如果您的表单提交方法是GET
,那么您需要使用$\u GET
变量进行检查,如
if (isset($_GET['check1'])) {
// Checkbox is selected
}
了解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();}
}
}
秘密在于首先更新所有值(在本例中为0),并且由于只发送已检查的值,这意味着您得到的所有值都应设置为1,因此您得到的所有值都应设置为1
示例是PHP,但适用于所有内容
玩得开心:)将复选框用作数组时:
<input type="checkbox" name="food[]" value="Orange">
<input type="checkbox" name="food[]" value="Apple">
请记住先检查数组是否已设置,例如:
if(isset($_POST['food']) && in_array(...
要检查复选框是否已选中,请使用empty()
提交表单时,将始终设置复选框,因为所有POST变量都将随表单一起发送
检查复选框是否为空,如下所示:
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
将注意不要在未提交时访问您的\u复选框\u名称。
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
开关位置保持的最小布尔检查
<?php
$checked = ($_POST['foo'] == ' checked');
?>
<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
如果满足以下条件,您可以使用短代码:
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
或者使用新的PHP7Null合并运算符
$check_value = $_POST['my_checkbox_name'] ?? 0;
我已经使用这个技巧好几年了,它在与PHP和数据库一起使用时,对于选中/未选中的复选框状态没有任何问题
HTML代码:(用于添加页面)
提示:除非用户选中,否则将始终存在空值。因此,我们已经有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>
在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>
filter\u input(input\u POST,'checkbox\u name',filter\u DEFAULT,filter\u FORCE\u ARRAY)Wordpress具有选中()功能。
参考:
描述
比较前两个参数,如果相同,则标记为选中
参数
美元支票
(混合)(必需)要比较的值之一
$current
(混合)(可选)(true)要比较的其他值(如果不只是true)
默认值:true
$echo
(bool)(可选)是回显还是仅返回字符串
默认值:true
返回#返回
(字符串)html属性或空字符串
<form>
<input type="check" id=chk1 value="1">
<input type="check" id=chk2 value="1">
<input type="check" id=chk3 value="1">
</form>
当您检查chk2时,您可以看到如下值:
<?php
foreach($_POST as $key=>$value)
{
if(isset($key))
$$key=strip_tags($value);
}
insert into table (chk1,chk2,chk3) values ('','1','');
?>
您应该为输入命名。
然后单击哪个框,您将在选择方法中收到“开”
Array
(
[shch] => on
[foch] => on
[ins_id] => #
[ins_start] => شروع گفتگو
[ins_time] => ما معمولاً در چند دقیقه پاسخ میدهیم
[ins_sound] => https://.../media/sounds/ding-sound-effect_2.mp3
[ins_message] => سلام % به کمک نیاز دارید؟
[clickgen] =>
)
在我的表单名中有两个复选框,分别是“shch”和“foch”复选框在选中时也可以有值。因此,为了兼容性,只需使用isset($\u POST['checkboxName'])
就更容易了。如果未设置value属性,某些浏览器可能支持“on”值,但一般来说,最好设置value属性并在提交时检查它。如果选中该框,“Value1”是否会更改?@Developer\u ACE除非我误解了您,否则如果选中该复选框,本例中的值将为Value1
。如果未选中,$\u POST['test']
将根本不存在。如果使用serialize提交,请执行此操作。var checkbox1_data=$(“#checkboxinput_id”).prop(“checked”)==false?“0”:“1”;var data=$(“#formveri”).serialize()+”&a=“+checkbox1_数据;我也注意到了这一点,但我觉得使用它很安全:Zend Framework也这么做!这很有趣。但是,如果选中复选框,用户代理提交第一个值而不是最后一个值的可能性很小吗?@rybo111,对于用户代理,我不这么认为,但是对于自定义javascript表单解析器,您应该小心。对不起,有人能解释一下它是如何工作的吗?我不明白。如果始终只提交最后一个值(输入[type=“checkbox”]
的值),为什么会显示隐藏字段?如果复选框未选中,则不会在post中传输(因此只传输隐藏字段)。当它被检查时,它被传输,并将覆盖隐藏的值。非常快速和非常聪明的解决方案,我看到了帮助来堆栈溢出!虽然这个代码片段可以解决这个问题,但它没有解释为什么或者如何回答这个问题。请,因为这确实有助于提高你的文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。标记者/评论者:给出答案时,最好给出正确答案。当你回答一个非常老的帖子11其他答案时,这一点尤其正确。你认识到复选框需要保持它的状态,这是很好的。但是,您执行此操作的代码不正确。此问题实际上表示“已检查”(提交表单时)。PHP确定是否选中复选框需要在元素切换后调用Ajax。如果未选中复选框,则不会发布该复选框,因此现在将始终设置该复选框。^不*始终设置这是真正的问题
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
$check_value = $_POST['my_checkbox_name'] ?? 0;
<input name="status" type="checkbox" value="1" checked>
<input name="status" type="checkbox" value="1"
<?php if ($row['status'] == 1) { echo "checked='checked'"; } ?>>
$status = $_POST['status'];
if ($status == 1) {
$status = 1;
} else {
$status = 0;
}
<?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>
<?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>
checked( mixed $checked, mixed $current = true, bool $echo = true )
<form>
<input type="check" id=chk1 value="1">
<input type="check" id=chk2 value="1">
<input type="check" id=chk3 value="1">
</form>
<?php
foreach($_POST as $key=>$value)
{
if(isset($key))
$$key=strip_tags($value);
}
insert into table (chk1,chk2,chk3) values ('','1','');
?>
Array
(
[shch] => on
[foch] => on
[ins_id] => #
[ins_start] => شروع گفتگو
[ins_time] => ما معمولاً در چند دقیقه پاسخ میدهیم
[ins_sound] => https://.../media/sounds/ding-sound-effect_2.mp3
[ins_message] => سلام % به کمک نیاز دارید؟
[clickgen] =>
)