如果在PHP中选中复选框,如何阅读?
答案 0 :(得分:309)
如果您的HTML页面如下所示:
<input type="checkbox" name="test" value="value1">
提交表格后,您可以查看:
isset($_POST['test'])
或
if ($_POST['test'] == 'value1') ...
答案 1 :(得分:92)
Zend Framework在复选框上使用了一个很好的黑客,你也可以自己做:
生成的每个复选框都与同名的隐藏字段相关联,位于复选框之前,值为“0”。然后,如果您的复选框为值“1”,您将始终在生成的GET或POST中获得“0”或“1”值
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
答案 2 :(得分:49)
将复选框用作数组时:
<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(...
答案 3 :(得分:5)
我已经使用这个技巧好几年了,在使用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变量来存储数据库。
答案 4 :(得分:3)
您可以在$ _POST或$ _GET数组中检查相应的值是否已设置且非空,具体取决于表单的操作。
即:使用name
“test”的POST表单(即:<input type="checkbox" name="test">
,您可以使用:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
答案 5 :(得分:2)
了解isset
这是一个内置的“函数”,可以在if语句中用于判断变量是否已被使用或设置
示例:
if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}
答案 6 :(得分:2)
好吧,上面的例子只有在你想要INSERT一个值时才有用,对于不同的值UPDATE不同的值没有用,所以这是我要更新的小技巧:
//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。 / p>
示例是PHP,但适用于所有内容。
玩得开心:)
答案 7 :(得分:2)
要检查是否选中了复选框,请使用清空()
提交表单后,复选框将始终设置,因为所有 POST 变量将与表单一起发送。
检查复选框是否选中为空,如下所示:
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
答案 8 :(得分:1)
保留开关位置的简约布尔检查
<?php
$checked = ($_POST['foo'] == ' checked');
?>
<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
答案 9 :(得分:1)
<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','');
?>
答案 10 :(得分:1)
您可以使用短if:
docker -H tcp://localhost:4322 ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
或使用新的PHP7 $check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
Null coalescing operator
答案 11 :(得分:1)
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
Short circuit evaluation会注意,以便在未提交时{0}访问your_checkbox_name
。
答案 12 :(得分: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>
答案 13 :(得分:0)
在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'])
答案 14 :(得分:0)
filter_input(INPUT_POST,'checkbox_name',FILTER_DEFAULT,FILTER_FORCE_ARRAY)
答案 15 :(得分:0)
WordPress具有git describe
功能。
参考:https://developer.wordpress.org/reference/functions/checked/
checked()
说明 比较前两个参数,以及是否选中相同的标记
参数 $已检查 (混合)(必需)要比较的值之一
$ current (混合)(可选)(真)要比较的其他值(不只是真) 默认值:true
$ echo (布尔)(可选)是回显还是仅返回字符串 默认值:true
返回#返回 (字符串)html属性或空字符串
答案 16 :(得分:-1)
你应该为你的输入命名。 然后点击哪个框,您将在选择方法中收到“on”
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”
答案 17 :(得分:-3)
<?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']);
}
?>