本人尝试开发考试管理系统。我不想要相同的问题或相同的id不显示第二次或其他任何时候考试用户。如何给出这个条件呢?
我的功能是:
public function qustionShow($question, $limit=4){
$show = $this->conn->query("select * from question where cat_id ='$question' ORDER BY RAND() LIMIT $limit");
while ($row=$show->fetch_array(MYSQLI_ASSOC)){
$this->qus[]=$row;
}
return $this->qus;
}发布于 2018-09-08 06:34:06
您需要跟踪哪些问题已经被提出。如果您不希望仅在会话中再次选择问题,则可以将问题id保存到会话中。
您可以将一个数组初始化为会话$_ session‘question _ asked’= array();然后一旦提出问题,您将
array_push([THE QUESTION ID], $_SESSION['questions_asked']);当然,对于提出的任何问题,都需要将问题ID替换为sql id。
请记住,您将需要修改您的查询,以说明会话中保存的所有内容。
如果您不希望它们再次显示,您将需要记录用户已经看到的问题,并可能需要将其永久存储在数据库中。
您可能会有一个表来为每个用户存储这些信息
user_question_asked
至少有这两列
user_id
因此,每次询问问题时,都要插入当前用户id和问题id。
那么您的查询可能是
SELECT * FROM question where cat_id ='$question' AND [QUESTION_ID] NOT IN
(SELECT question_id from user_question_asked where user_id [CURRENT USER's ID]
) ORDER BY RAND() LIMIT $limit;`希望这会有帮助,我不确定您的表/列结构是什么,但这些是我对解决这个问题的一些建议。
https://stackoverflow.com/questions/52230005
复制相似问题