【发布时间】:2015-11-20 05:17:08
【问题描述】:
我想通过从查询结果中测试一个数组并从查询结果中测试另一个数组来显示复选框,但我似乎无法得到它......
这是我到目前为止的想法:
第一个查询:
$getbficiaryres = mysqli_query($link, "
SELECT
a.`id`,
b.`id` as `bfryid`, b.`bficiaryname`,
c.`notes` as `bfrynotes`
FROM
`activity` a, `beneficiary` b, `bficiarynotes` c, `actbficiary_link` d
WHERE
a.`id` = c.`activity_id` AND
a.`id` = d.`activity_id` AND
b.`id` = c.`beneficiary_id` AND
b.`id` = d.`beneficiary_id` AND
a.`id` = '".$edit."'");
$getbficiaryrow = mysqli_fetch_array($getbficiaryres);
第一个查询结果:
id bfryid bficiaryname bfrynotes
1 2 xxx xxx notes
1 4 yyy yyy notes
第二次查询:
$bficiaryres = mysqli_query($link, "SELECT `id`, `bficiaryname` FROM `beneficiary`");
第二个查询结果:
id bficiaryname
1 aaa
2 xxx
3 bbb
4 yyy
php代码:
$i = 0;
while($bficiaryrow = mysqli_fetch_array($bficiaryres)){
if($bficiaryrow['id'] == $getbficiaryrow['bfryid']){
echo '
<div class="form-group">
<div class="col-sm-12">
<div class="checkbox">
<label for="checkbox"><input type="checkbox" name="pmanfaat['.$i.']" value="'.$getbficiaryrow['bfryid'].'" checked />'.$getbficiaryrow['bfryname'].'
</label>
</div><textarea name="ketpmanfaat['.$i.']" class="form-control">'.$getbficiaryrow['bfrynotes'].'</textarea>
</div>
</div>';
}else{
echo '
<div class="form-group">
<div class="col-sm-12">
<div class="checkbox">
<label for="checkbox"><input type="checkbox" name="pmanfaat['.$i.']" value="'.$bficiaryrow['id'].'" />'.$bficiaryrow['bficiaryname'].'
</label>
</div><textarea name="ketpmanfaat['.$i.']" class="form-control"></textarea>
</div>
</div>';
}
$i++;
}
我期望的结果是将两个复选框 xxx (id no 2) 和 yyy (id no 4) 设置为选中,但唯一选中的是 xxx。
如何正确循环以测试所有数组?
我希望我的问题足够清楚。
我的头'快要爆炸了......任何帮助都非常感谢。
谢谢。
【问题讨论】:
-
您需要两个循环,一个用于迭代第一个查询的结果,另一个循环在第一个循环中迭代第二个查询的结果
-
@mynawaz 我尝试在其中循环第二个查询和第一个查询,但如果我这样做,我只有两个复选框......因为第一个查询结果只给出两行。我想要的是 4 个复选框,其中两个复选框(xxx 和 yyy)设置为已选中,我该怎么做?谢谢。
-
一定要为两个查询使用两个不同的连接,因为如果你使用相同的连接来执行两个查询,内部查询将重置外部查询的链接标识符,它将只执行一次迭代
-
@mynawaz 我已经尝试按照您的建议放置,但现在结果显示 8 个复选框,其中两个复选框 xxx 和 yyy 设置为已选中,它越来越接近我正在寻找的内容,但是现在,如何只迭代与第二个查询一样多的行,即只有 4 个复选框?
标签: php mysql arrays loops checkbox