我有两个查询会生成面板ID。一个查询仅生成与产品相关的面板ID。另一个查询生成所有可用的面板ID。
我正在尝试通过复选框显示所有面板,但相关面板显示为选中状态。我已将相关面板存储在$panel_id
中,但是,以下代码似乎仅循环一次,因为它仅检查了一个相关面板。我不确定该怎么办。
//related panels
$panel_id = $row['panel_profile_id'];
/all panels
$result = mysqli_query($con,"SELECT * FROM panel_profile");
while($row = mysqli_fetch_array($result)) {
if($row['panel_profile_id'] == $panel_id) {
echo '<input type="checkbox" name="panel_profile[]" value="' . $row['panel_profile_id'] . '" checked="checked">' . $row['name'] . '<br />';
} else {
echo '<input type="checkbox" name="panel_profile[]" value="' . $row['panel_profile_id'] . '">' . $row['name'] . '<br />';
}
}
表结构
表格:panel_table
panel_profile_id | name
-----------------+-----
1 | flat
表格:relationship_table
wood_species_id | panel_profile_id
----------------+-----------------
1 | 1
最佳答案
您可以通过使用左联接选择应检查的panel_id,让数据库为您完成工作。
例如,
如果以下内容返回了您要检查的面板配置文件列表,
SELECT panel_profile_id FROM relationship_table WHERE wood_species_id=4
你可以用
SELECT panel_profile.panel_profile_id,
(products.panel_profile_id IS NOT NULL) AS checked
FROM panel_profile LEFT JOIN relationship_table
ON panel_profile.panel_profile_id=products.panel_profile_id
WHERE wood_species_id=4
此查询返回两列,panel_profile_id和一个选中的列,如果应选中则为1,否则为0。