我正在为一所学校开发一个带有php和mysql的测验模块。要求很简单:
1)共有10个类别(科目)。
2)从每个类别中选择8个随机问题并逐个显示。
3)获取学生的意见。
4)计算结果并显示。
现在,我面临的问题是如何使脚本尽可能高效。从某种意义上说,效率更高,更少的数据库命中率。 我想将该特定用户的80个答案存储在位置中,然后在数据库中一次更新所有答案。我不想使用cookies。我能以什么方式实现这一目标?
我可以参考哪些简单的php测验模块?
谢谢:)
答案 0 :(得分:3)
从我个人的角度来看,如果我被要求设计类似的东西,我会做以下事情:
in_array()
(数组是正确的结果)并增加一个变量,以便知道有多少问题得到正确回答(如果每个问题都有相同的“值”,那就有效)享受!
答案 1 :(得分:1)
您显然需要快速缓存层。我建议为此目的使用memcached或APC。会话数据也可能有效。
也就是说,你可能最好使用全栈PHP框架。一个好的将为您管理缓存。我建议查看symfony或CakePHP。
这是真正的问题:您是否在确定 出现问题之前,是否正在尝试预先解决此问题?这是一个糟糕的方法。在尝试解决之前,请确保您遇到问题。
答案 2 :(得分:0)
如果你必须逐个显示它们,你需要将结果存储在某处,因为http是无状态的,你有两个选择:db或cookie。现在,在我看来,最好将答案存储在像这样的
这样的var中的cookie中"a:1,b:2,question:answer,.."
然后在最后爆炸它们并检查结果。
答案 3 :(得分:0)
你不应该那样想。 webapp将中间结果存储在数据库中是完全正常的。大多数应用程序每页都会执行多个数据库查询。
您可以使用sessions。这允许您存储耦合到用户的数据。但是,会话数据也存储在某个地方,因此效率不是将其存储在会话而不是数据库中的理由。
答案 4 :(得分:0)
您想要做的是一种向导式流程,每页都有一个“下一步”按钮。这通常用于将结果存储在会话中以用于此类事物。
如果您将在会话中随机提取的问题存储起来,请执行以下操作:
$_SESSION['questions'] = array(
array(
'question' => 'What is the response to life ?',
'answer' => '42',
'user_answer' => null, // Will contain the user answer
'answered' => false), // Will be set to true once the question is answered
array(
'question' => 'What is the color of the sky ?',
'answer' => 'blue',
'user_answer' => null,
'answered' => false)
);
然后你可以迭代问题,跟踪已回答的问题。