Php 结束一个用户';完成测验后轮到我们了

Php 结束一个用户';完成测验后轮到我们了,php,mysql,sql,Php,Mysql,Sql,这篇文章的标题不言自明。 假设我有一个用PHP编写的测验系统,一个用户登录回答一个问题,那么在用户正确回答测验后,我们如何结束轮到他/她 考虑以下流程图: 在用户正确回答问题后,我想编写一个可能的PHP函数,该函数将完全关闭该级别,这样用户就不必再次回答它,此外还可以通过不断回答来作弊并获得不必要的分数 我只是想知道是否有一个方法或工作围绕这一点。使用数据库来找出用户是否已经回答了问题,这已经在我的想法列表中了。但我希望有人能想出更好的办法。 我希望我说得很清楚。你如何在整个测验中跟踪他们的答

这篇文章的标题不言自明。 假设我有一个用PHP编写的测验系统,一个用户登录回答一个问题,那么在用户正确回答测验后,我们如何结束轮到他/她

考虑以下流程图:

在用户正确回答问题后,我想编写一个可能的PHP函数,该函数将完全关闭该级别,这样用户就不必再次回答它,此外还可以通过不断回答来作弊并获得不必要的分数

我只是想知道是否有一个方法或工作围绕这一点。使用数据库来找出用户是否已经回答了问题,这已经在我的想法列表中了。但我希望有人能想出更好的办法。
我希望我说得很清楚。

你如何在整个测验中跟踪他们的答案?我会使用会话,用问题ID存储他们给出的每个答案。在他们单击“完成”然后存储到DB表中之前,不要给他们任何分数:
他们从会议中获得了哪些分数;当前问题ID;他们的用户ID

然后,当用户提出问题时,检查数据库,大致如下所示:

如果没有任何回复,他们也没有从这个问题中得到任何观点

您不想要或不需要200张桌子。每行存储一个表:
questionID,userID,totalpoints,可能还有其他东西

如果您希望能够为以后的日期存储记录,即当记录注销、离开网站、稍后返回等时,没有更好的方法了。
(请不要考虑使用文件,在这种情况下会很混乱)

你还需要考虑其他事情,比如如果他们有一个问题A的开场,如果他们去问B,你会破坏另一个阶段,他们必须开始问问题吗?我怀疑你会或你会有会议到处都是,为什么会有人想开始一个测试,去另一个,然后回来一个

如果您希望他们能够做到这一点,最好也将他们的进度存储在DB表中。也许您可以使用存储他们的分数的表(在上面的示例中是TBLQuestions)并有一个额外的列,如“IsComplete”。

如果设置为“是”,则向他们显示已完成问题的分数,如果设置为“否”,则他们从一个新问题开始并完成问题,如果设置为“部分完成”,则您的脚本将查询另一个表(例如tblQuestionProgress),将他们的进度从该表拖到会话中,从该表中删除他们的进度,将另一个表设置为IsComplete=no,则它们处于禁用状态

只需记录用户已回答,并对照该记录进行检查。我认为这意味着使用数据库。这是可行的,但是,我不想让系统中的某个特定问题对应200个表。所以我在寻找一个更好的方法,或者更有效的方法。不,你会有一个1问题表,一个用户表和一个用户回答表。可能更多但信息不足;但肯定不是每个问题一张桌子!哦,是的,对不起,弄错了。我的意思是1个问题表和大约200列。如果我错了,请纠正我。这种方法无论哪种方式都会奏效。如果可能的话,我只是在寻找另一种方法。感谢您对会话的帮助(思考?;)
SELECT
  TotalPoints
FROM
  tblQuestionsAnswered
WHERE
  UserID = $UserId AND
  QuestionID = $ThisQuestionId