【发布时间】:2019-10-25 21:21:13
【问题描述】:
我有 5 个复选框,用户可以从中选择一个或多个选项。然后在数据库中更新选定的选项。然后在另一个页面上显示/查看用户的选择。但是我的问题是,在 PHP 中执行 foreach 循环时,我想将更新的选项与未选择的选项一起显示。
这是 5 个复选框
<input type="checkbox" name="interest[]" value="fishing">Fishing
<input type="checkbox" name="interest[]" value="camping">Camping
<input type="checkbox" name="interest[]" value="hiking">Hiking
<input type="checkbox" name="interest[]" value="swimming">Swimming
<input type="checkbox" name="interest[]" value="running">Running
<br><br>
<input type="submit" name="submit" value="Submit">
这是更新的代码
if (isset($_POST["submit"])) {
$interestArr = $_POST['interest'];
$interest = new Interest();
$newArr = implode(',', $interestArr);
$interest->updateInterests($id=19, $newArr);
}
这是显示的代码
<?php
$interest = new Interest();
$interests = $interest->showInterests($userid=19)->interests;
$newArr = explode(',', $interests);
foreach ($newArr as $data) {
echo '<input type="checkbox" name="interest[]" value="'.$data .'" checked>'.$data;
}
更新选项存储在 DB 的兴趣列下,如下所示 钓鱼、露营、跑步
foreach 循环显示它们选中的复选框以及正确的对应标签。
如何显示其他未被选中的复选框,以便用户可能想要进行更改?
谢谢。
【问题讨论】:
-
此代码将所有选中的复选框保存到数据库中,而不是未选中的复选框。因此,您必须将所有复选框的记录保存到一个全局数组或数据库中,然后检查您打印复选框的 foreach 循环中的复选框。如果您的全局复选框与数据库中的值相同,请保持选中状态,否则保持未选中状态。
-
谢谢@Vantiya。我想我得到了你的凹槽,它看起来不错。你介意提供一些代码 sn-ps 让我开始。谢谢。
-
兴趣列表是静态数组还是从另一个表中获取?
-
@MohammedYassineCHABLI,它来自数据库中的一个表。更新的同一张表。
-
我要将所有兴趣变量存储在同一张表的另一列中,就像我们的好朋友 Vantiya 建议的那样,我将做一个比较循环,看看我们如何进行。
标签: php arrays checkbox foreach