數據庫表:嵌套的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