第二个查询仅显示初始查询的某些行的数据

时间:2013-08-31 05:10:08

标签: php mysql pdo

我真的不确定嵌套查询是否是我需要的。

我正在一个教师可以创建测验以帮助他们的学生学习的网站上工作。我有一个简单的查询,它根据成员的会话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']的情况下显示表单?

任何提示都将不胜感激。

干杯, 戴夫

1 个答案:

答案 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/>

 ";
  }
        }
        ?>