为了账号安全,请及时绑定邮箱和手机立即绑定

复选框,使用多对多关系 php

复选框,使用多对多关系 php

慕田峪9158850 2023-09-11 14:46:22
我正在尝试创建一个管理表单,允许用户选择他们的需求并使用多对多关系保存到数据库。我可以使用下面的 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 循环,但我无法设法检查复选框。我如何循环遍历上面的数组,如果artistid = 2,当foreach循环生成时,在html中将其显示为“已选中”$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 进行硬编码。这里的任何指导将非常感激。我也确信可能有一种非常简单的方法可以做到这一点。
查看完整描述

2 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

例子:


<?php

$options =  [

    ["artistid" => 1,  "req_id" => 1,  "requirement" => "Microphone"],

    ["artistid" => 1,  "req_id" => 2,  "requirement" => "Table"],

    ["artistid" => 1,  "req_id" => 3,  "requirement" => "Chair"],

    ["artistid" => 1,  "req_id" => 4,  "requirement" => "Microphone Stand "],

    ["artistid" => 1,  "req_id" => 5,  "requirement" => "Personal Artifacts"],

    ["artistid" => 1,  "req_id" => 6,  "requirement" => "Set Dressing"],

    ["artistid" => 1,  "req_id" => 7,  "requirement" => "Raised Step "]

];

$checkedOptions = [2, 7];


foreach ($options as $option) {

    ?>

    <label class='checkbox'>

        <input type="checkbox" name="requirement[]" value="<?= $option['req_id']?>" <?= in_array($option['req_id'], $checkedOptions)  ? 'checked' : '' ?> >

           <?= $option['requirement'] ?>

    </label>

            <br>

<?php

    }

?>


查看完整回答
反对 回复 2023-09-11
?
跃然一笑

TA贡献1826条经验 获得超6个赞

您需要一个条件语句来查看变量是否设置为来自$_POST[]或$row[]数组的输入字段的名称,以及是否设置回显checked输入字段中的属性。如果您动态创建输入列表,则需要对 value 属性执行相同的操作。


<input type='checkbox' name='microphone' value='$eqid' <?php if($eqname === "microphone"){ echo 'checked'; }> 

<input type='checkbox' name='table' value='$eqid' <?php if($eqname === "table"){ echo 'checked'; }> 

<input type='checkbox' name='chair' value='$eqid' <?php if($eqname === "chair"){ echo 'checked'; }>

<input type='checkbox' name='microphone_stand' value='$eqid' <?php if($eqname === "microphone_stand"){ echo 'checked'; }> 

<input type='checkbox' name='personal_artifacts' value='$eqid' <?php if($eqname === "personal_artifacts"){ echo 'checked'; }> 

<input type='checkbox' name='set_dressing' value='$eqid' <?php if($eqname === "set_dressing"){ echo 'checked'; }>    

<input type='checkbox' name='raised_step' value='$eqid' <?php if($eqname === "raised_step"){ echo 'checked'; }> 

<input type='checkbox' name='other' value='$eqid' <?php if($eqname === "other"){ echo 'checked'; }>


查看完整回答
反对 回复 2023-09-11
  • 2 回答
  • 0 关注
  • 57 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信