ネストされたクエリが必要かどうかは本当にわかりません。
私は、教師が生徒の学習に役立つクイズを作成できるサイトに取り組んでいます。tbl_quiz_titles の member_id と一致するメンバーのセッション ID に基づいて、ログインした教師が既に作成したクイズをエコーする簡単なクエリがあります。
各クイズ名の下には、教師が別のページに移動してクイズにバッジを追加できるボタン (フォーム内) があります。このバッジは、教師が決定した特定のパーセンテージを取得した場合に学生が受け取ることができます。
これが私の現在のコードです:
session_start();
include "mysqlpdo_connect.php";
$my_quiz_query = $pdo->query("SELECT * FROM tbl_quiz_titles WHERE member_id = '{$_SESSION['member_id']}'") ;
$result_my_quiz_query = $my_quiz_query->fetchAll(PDO::FETCH_ASSOC);
foreach($result_my_quiz_query as $row_my_quiz_query) {
echo $row_my_quiz_query['quiz_id'] . ": " . $row_my_quiz_query['quiz_name'] . "<br/>
<form action=\"ebox_badge_new.php\" method=\"get\" style=\"float: left\">
<input type=\"hidden\" name=\"ref\" value=\"" . $row_my_quiz_query['quiz_id'] . "\" />
<button><img src=\"images/icons/Add_Badge_Btn.gif\" alt=\"Add badge to quiz\" width=\"100\" height=\"25\" border=\"0\" /></button>
</form>
<br/>
<br/>
";
}
問題は、このクエリがすべてのクイズ名の下にフォーム ボタンを表示することです。教師がクイズにバッジを追加したら、その特定のクイズにバッジを追加するためのフォームを表示したくありません。
バッジは tbl_badges に保存され、クイズ ID は列「badge_quiz_id」に保存されることに注意してください。
したがって、私の質問は次のとおりです。バッジが関連付けられていないクイズに対してのみフォーム ボタンが表示されるように、コードを変更するにはどうすればよいですか?
すなわち: $row_my_quiz_query['quiz_name']
クイズごとにエコーする必要がありますが、フォームは $row_my_quiz_query['quiz_id'] が tbl_quiz_badges.badge_quiz_id に表示されない場合にのみ表示する必要があります。
どんなヒントでも大歓迎です。
乾杯、デイブ