完成测验后结束用户的回合

时间:2013-09-08 21:40:27

标签: php mysql sql

这篇文章的标题非常明显。 假设我有一个用PHP编码的测验系统并且用户已登录以回答问题,在他/她正确回答测验之后我们将如何结束用户的回合?

考虑以下流程图:

Quiz question flowchart

在用户正确回答问题之后,我想编写一个可能完全关闭该级别的PHP函数,以便用户不必再次回答它,除了通过连续回答作弊并赚取不必要的费用分。

我只是想知道是否有方法或解决方法。使用数据库来确定用户是否已经回答了问题已经在我的想法列表中。但我希望有人会想出更好的东西。 我希望我说清楚。

1 个答案:

答案 0 :(得分:2)

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

然后,当用户提出问题时,请检查数据库(大致):

SELECT
  TotalPoints
FROM
  tblQuestionsAnswered
WHERE
  UserID = $UserId AND
  QuestionID = $ThisQuestionId

如果没有任何回复,他们没有从这个问题得到任何分数。

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

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

你还需要考虑其他事情,例如,如果他们有一个问题A的会话开放,如果他们去问题B你是否要破坏其他会话,他们必须开始问题A全部?我probs会或者你会在这个地方举行会议,为什么有人想要开始一个测验,去另一个测验并稍后回到那个测验。

如果您希望他们能够这样做,您最好将他们的进度存储在数据库表中。也许您可以使用存储其点的表(在上面的示例中为tblQuestionsAnswered)并且还有一个像“IsComplete”这样的附加列。
如果设置为“是”,则向他们显示已完成问题的点数,如果“否”则从新的开始并完成问题,如果设置为“partdone”,则脚本将查询另一个表(例如tblQuestionProgress),将他们从该表的进度拖到会话中,从该表中删除他们的进度,将另一个表设置为IsComplete = no,然后它们就关闭了。