【发布时间】:2020-03-15 02:53:45
【问题描述】:
我正在尝试创建一个管理表单,允许用户选择他们的需求并使用多对多关系保存到数据库。我可以使用下面的while循环生成表单项并提交这些
while ($rows = $equipresults->fetch()) {
$eqid = $rows['req_id'];
$eqname = $rows['requirement'];
echo "
<label class='checkbox'>
<input type='checkbox' name='requirement[]' value='$eqid'> $eqname
</label><br>
";}
当我提交后返回表单时,未选中复选框,即使值已添加到数据库中。我明白为什么上面没有返回任何东西。
所以我的问题是如何编写一个循环,允许我将复选框显示为已选中的数组,类似于下面?
$equipresult = array (
[0] => Array ( [artistid] => 2 [req_id] => 1 [requirement] => Microphone )
[1] => Array ( [artistid] => [req_id] => 2 [requirement] => Table )
[2] => Array ( [artistid] => 2 [req_id] => 3 [requirement] => Chair )
[3] => Array ( [artistid] => [req_id] => 4 [requirement] => Microphone Stand )
[4] => Array ( [artistid] => [req_id] => 5 [requirement] => Personal Artifacts )
[5] => Array ( [artistid] => [req_id] => 6 [requirement] => Set Dressing )
[6] => Array ( [artistid] => [req_id] => 7 [requirement] => Raised Step )
[7] => Array ( [artistid] => [req_id] => 8 [requirement] => Other ) )
我正在尝试根据上面的数组显示以下内容
我一直在玩一个 foreach 循环,但我无法让复选框被选中。如何循环遍历上述数组,如果艺术家 ID = 2,当 foreach 循环生成
$req=explode(",",$rows['requirement']);
if (!empty($equipresult)) {
foreach ($equipresult as $row) {
$checked = (in_array($row, $req)) ? 'checked="checked"' : '';
?>
<label class='checkbox'>
<input type="checkbox" name="requirement[]" value="<?php echo $row;?>"
<?php $checked;?>><?php echo implode(", ", $row);?>
</label><br>
<?php
}
}
?>
最终我试图避免对 html 进行硬编码。这里的任何指导将不胜感激。我也确信可能有一种非常简单的方法可以做到这一点。
【问题讨论】:
-
我有点迷路了。您的第三个代码示例是否应该替换第一个中
while循环中的代码? -
是 - 抱歉,第一个代码 sn-p 表明我可以简单地呈现数据库中的选项,我希望在页面加载时根据值将框显示为“已选中”在数据库中。例如该数组显示每个选定需求的用户 ID。我希望将复选框显示为选中此用户需要这两个项目
-
那么,您是否尝试像第一个一样在
while循环中使用第三个代码示例?您省略了代码的重要部分 - 第三个示例中的$equipresult来自哪里,它包含什么?您可以编辑您的问题以显示应该呈现选中框的代码的完整示例吗? -
已按要求更新问题
-
我认为你需要这个:
in_array($row, $req['req_id']),但我不太确定。可以试试吗?