数据库表:嵌套的foreach循环用IF语句
膜(id_film PK,名)
流派(id_genre PK,名)
film_genre(id_film FK,id_genre FK)
这输出来自流派表的所有流派:
$genremenu = $veza -> prepare("select * from genre");
$genremenu -> execute();
$resultmenu = $genremenu -> fetchALL(PDO::FETCH_OBJ);
这输出所有选择的g从表film_genre为enres特定膜:
$izraz = $veza -> prepare("select * from genre a inner join film_genre b on a.id_genre=b.id_genre where b.id_film=:id_film");
$izraz -> execute(array("id_film" => $film -> id_film));
$selectedgenre = $izraz -> fetchAll(PDO::FETCH_OBJ);
我有在形式从数据库将数据输出到多个选择的列表中的问题。这是一个电影数据库,我正在做foreach迭代来阅读所有的电影流派线输出到多个选择字段。但我在输出“选定”类型到该列表时遇到了麻烦。代码
foreach ($resultmenu as $line) {
foreach ($selectedgenre as $sg) {
if ($line-> id_genre === $sg-> id_genre) {
echo "<option value=\"" . $line-> id_genre . "\" selected>" . $line-> name . "</option>";
} else {
echo "<option value=\"" . $line-> id_genre . "\">" . $line-> name . "</option>";
}
}
}
现在我知道,我得到了在选择列表中的重复输出,因为,例如,如果电影已经得到了2个流派假设喜剧和犯罪,这意味着每$行他将迭代两次检查$ selectedgenre,所以我得到的输出,如:
- 喜剧 “选择”
- 犯罪
- 犯罪
- 喜剧 “选择”
- 恐怖
- 恐怖
- 等
我新的PHP,所以我要问怎么走,没有重复的条目右侧列表输出?我试着刹车,继续但不工作,或者我没有使用它的权利?请帮助并提供(如果可能)更多替代解决方案。谢谢!
'DISTINCT'将排序帮助您的重复问题。至于选定的问题,var_dump($ line-> id_genre,$ sg-> id_genre);'输出是什么? –
检查这个 - 'if($ line-> id_genre === $ sg-> id_genre)' –
我更新了我的问题,所以我认为DISTINCT不会帮助,因为我没有从一个表中选择不同的值... @ JonStirling现在从问题更清楚var_dump输出什么 – Josip