Php 复选框问题,可以';无法让数组在表单提交时保持检查状态
在过去的3个小时里,我一直在努力解决这个问题,我已经接近了,但我的经验不足正在显现出来。我已经尝试了我能想到的所有排列 我有一张带复选框的表格。这些值是从mysql检索的。表单正在提交到同一页。键入“Axminster”进行搜索 原始复选框代码如下所示:Php 复选框问题,可以';无法让数组在表单提交时保持检查状态,php,checkbox,Php,Checkbox,在过去的3个小时里,我一直在努力解决这个问题,我已经接近了,但我的经验不足正在显现出来。我已经尝试了我能想到的所有排列 我有一张带复选框的表格。这些值是从mysql检索的。表单正在提交到同一页。键入“Axminster”进行搜索 原始复选框代码如下所示: <?php $categories_list = split('[ ]', get_setting('categories', $db)); foreach ($categories_list AS $cat) { $cat = trim
<?php
$categories_list = split('[
]', get_setting('categories', $db));
foreach ($categories_list AS $cat)
{
$cat = trim($cat);
echo "<input type=\"checkbox\" name=\"categories[]\" value=\"" . $cat . "\">" . $cat . "<br>";
}
?>
然后我提交表单,像往常一样,我希望复选框的选中值保持选中状态。对于我表单中的下拉框,我使用了代码
<?php if($radius == $_POST['radius']) echo ' selected="selected"'; ?>
这非常有效,但是我尝试使用以下代码使选中的复选框保持选中状态,我没有运气:
<?php
$categories_list = split('[
]', get_setting('categories', $db));
foreach ($categories_list AS $cat)
{
$cat = trim($cat);
// I've added these two lines, and added " . $select . " to the input field.
foreach ($_POST['categories'] AS $category) {
if($cat == $category) { $select = "CHECKED"; } }
echo "<input type=\"checkbox\" " . $select . " name=\"categories[]\" value=\"" . $cat . "\">" . $cat . "<br>";
}
?>
您可以使用
if(isset($_POST['categories']) && in_array($cat, $_POST['categories']))
您还需要在每个循环上重置$select
,或者使用else{}
,因为一旦使用foreach
设置,该值将永远不会更改,因此选中后的所有复选框也将被选中
代码现在可能看起来像-
<?php
$categories_list = split('[
]', get_setting('categories', $db));
foreach ($categories_list AS $cat)
{
$cat = trim($cat);
// I've added these two lines, and added " . $select . " to the input field.
if(isset($_POST['categories']) && in_array($cat, $_POST['categories'])) { $select = "CHECKED"; }
else { $select = ''; }
echo "<input type=\"checkbox\" " . $select . " name=\"categories[]\" value=\"" . $cat . "\">" . $cat . "<br>";
}
?>
我有点不清楚你真正的问题是什么。你能详细说明一下预期的行为和收到的行为吗?正如它所描述的,我正试图发布一个表单,以便在下一页记住复选框值。然而,它不工作,因为更多的复选框被选中比被选中。哈哈。。。我认为我看错了你的问题,删除了我的解决方案:p无论如何,你应该重新初始化你在循环中使用的变量,否则它们将把它们的值带到下一个迭代中。工作得很好,非常感谢Sean。多有才华啊!