以下描述是一个带有问题和答案的简单示例。但我网站的逻辑是相似的。
让我们说表是:
USERS table: USER_ID, etc
QUESTIONS table: QUESTION_ID, TEXT, CATEGORY, CORRECT_RESPONSE, AVAILABLE
RESPONSES table: QUESTION_ID, USER_ID, RESPONSE_VALUE
PROFILE table: USER_ID, CATEGORY_Questions, YEAR, NUMBER_OF_ANSWERED, Number_OF_CORRECT, POINTS
问题将由用户回答几个小时。每个问题都有相同的3个选择答案是/否/取消。
在一段时间过去之前,没有人知道答案(甚至是管理员)。与此同时,USERS可以选择存储在RESPONSES表中的响应。
一段时间后,我将手动将CORRECT_RESPONSE
添加到mysql表中,并将问题标记为AVAILABLE="NO"
。所以用户再也无法回答这个问题了。
然后我想为每个不可用的问题(ID)自动检查用户的RESPONSE_VALUE以查看他们是否选择了正确。然后为每个正确的答案添加点数。
我创建了另一个名为Profile的表,其中存储了Userid,问题类别,回答了多少,有多少是正确的,时间段以及为该类问题获得了多少积分。我这样做是为了更快地为每个类别的每个用户提供统计数据等。
所以在我将一个问题“标记”为完成后(AVAILABLE="NO"
)并且我已经提交了CORRECT_RESPONSE检查用户正确RESPONSE_VALUEs
然后更新配置文件表的最佳方法是什么?< / p>
答案 0 :(得分:1)
循环访问用户并运行以下查询:
回答所有问题
select responses.question_id from responses where responses.user_id=USER_ID
获得正确答案的数量
select responses.question_id from responses where responses.user_id=USER_ID and responses.question_id = questions.question_id and responses.response_value=questions.correct_response
修改强>
我假设你有某种管理界面。我只需添加一个“正确的答案”按钮,运行代码来纠正所有的答案。如果你没有管理界面,最简单的方法是将一个脚本放在一个可以运行更正的受保护文件夹中。
答案 1 :(得分:1)
再加上Galen所说的你想要添加一个变量
$num_correct++; while looping through the query
update PROFILE SET Number_OF_CORRECT = $num_correct WHERE USER_ID=responses.user_id