我真的不确定嵌套查询是否是我需要的。
我正在一个教师可以创建测验以帮助他们的学生学习的网站上工作。我有一个简单的查询,它根据成员的会话ID匹配tbl_quiz_titles中的member_id来回应已登录教师已经创建的测验。
每个测验名称下方是一个按钮(在表单中),允许教师转到另一个页面,为测验添加徽章,如果学生达到一定百分比(由老师确定),学生可以收到该徽章。 / p>
这是我目前的代码:
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']
应该为每个测验回显,但只应在tbl_quiz_badges.badge_quiz_id中看不到$ row_my_quiz_query ['quiz_id']的情况下显示表单?
任何提示都将不胜感激。
干杯, 戴夫
答案 0 :(得分:0)
感谢你指出我正确的方向“你的常识”。
这就是我想出来的,这似乎可以解决问题:
<?php
session_start();
include "mysqlpdo_connect.php";
$my_quiz_query = $pdo->query("SELECT *
FROM `tbl_quiz_titles`
LEFT JOIN
`tbl_badges`
ON `member_id` = '{$_SESSION['member_id']}'
AND `quiz_id` = `badge_quiz_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/>";
if ($row_my_quiz_query['badge_quiz_id'] == "")
{
echo" <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/>
";
}
}
?>