【发布时间】:2011-06-01 02:01:14
【问题描述】:
如果在 PHP 中选中了复选框,如何读取?
【问题讨论】:
-
这个问题实际上意味着“被检查”(提交表单时)。一旦元素被切换,PHP 确定是否选中了复选框 将需要 Ajax 调用。
标签: php html forms post checkbox
如果在 PHP 中选中了复选框,如何读取?
【问题讨论】:
标签: php html forms post checkbox
你应该给你的输入命名。 然后单击哪个框,您将在选择方法中收到“打开”
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”
【讨论】:
<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','');
?>
【讨论】:
Wordpress 有checked() 功能。
参考:https://developer.wordpress.org/reference/functions/checked/
checked( mixed $checked, mixed $current = true, bool $echo = true )
说明 比较前两个参数,如果相同标记为选中
参数 $检查 (混合)(必填)要比较的值之一
$当前 (混合)(可选)(真)要比较的另一个值(如果不只是真) 默认值:真
$回声 (bool) (可选) 是回显还是只返回字符串 默认值:真
返回 #返回 (string) html 属性或空字符串
【讨论】:
filter_input(INPUT_POST, 'checkbox_name', FILTER_DEFAULT, FILTER_FORCE_ARRAY)
【讨论】:
要检查是否选中了复选框,请使用 empty()
提交表单时,复选框将始终设置,因为 所有 POST 变量都将与表单一起发送。 p>
检查复选框是否为空,如下所示:
//Check if checkbox is checked
if(!empty($_POST['checkbox'])){
#Checkbox selected code
} else {
#Checkbox not selected code
}
【讨论】:
在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'])的用法
【讨论】:
<?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 和数据库一起使用时,对于选中/未选中的复选框状态没有任何问题。
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 变量用于数据库。
【讨论】:
你可以用短的 if 来做到这一点:
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
或使用新的 PHP7 Null coalescing operator
$check_value = $_POST['my_checkbox_name'] ?? 0;
【讨论】:
保留开关位置的简约布尔检查
<?php
$checked = ($_POST['foo'] == ' checked');
?>
<input type="checkbox" name="foo" value=" checked"<?=$_POST['foo']?>>
【讨论】:
<?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']);
}
?>
【讨论】:
当使用复选框作为数组时:
<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(...
【讨论】:
foreach ($_POST['food'] as $selected_food) 用于选中的复选框很好,谢谢
如果您的 HTML 页面如下所示:
<input type="checkbox" name="test" value="value1">
提交表单后,您可以通过以下方式进行检查:
isset($_POST['test'])
或
if ($_POST['test'] == 'value1') ...
【讨论】:
on。因此为了兼容性,使用isset($_POST['checkboxName']) 会更容易。
value1。如果不选中,$_POST['test'] 将根本不存在。
$check_value = isset($_POST['my_checkbox_name']) ? 1 : 0;
【讨论】:
$is_checked = isset($_POST['your_checkbox_name']) &&
$_POST['your_checkbox_name'] == 'on';
Short circuit evaluation 会注意防止您在未提交时访问your_checkbox_name。
【讨论】:
Zend 框架对复选框使用了很好的 hack,您也可以自己做:
每个生成的复选框都与一个同名的隐藏字段相关联,位于复选框之前,值为“0”。然后,如果您的复选框作为值“1”,您将始终在生成的 GET 或 POST 中获得“0”或“1”值
<input type="hidden" name="foo" value="0" />
<input type="checkbox" name="foo" value="1">
【讨论】:
input[type="checkbox"] 的那个),为什么还要使用隐藏字段?
好吧,上面的例子只有在你想插入一个值时才有效,对于将不同的值更新到不同的列没有用,所以这是我更新的小技巧:
//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,但适用于一切。
玩得开心:)
【讨论】:
让你的复选框的 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
}
【讨论】:
了解isset,它是一个内置“函数”,可在 if 语句中用于判断变量是否已被使用或设置
例子:
if(isset($_POST["testvariabel"]))
{
echo "testvariabel has been set!";
}
【讨论】:
您可以根据表单的操作在 $_POST 或 $_GET 数组中检查相应的值是否已设置且非空。
即:使用“测试”的 name 的 POST 表单(即:<input type="checkbox" name="test">,您可以使用:
if(isset($_POST['test']) {
// The checkbox was enabled...
}
【讨论】: