如何使用mysql和php编写跟踪用户学习进度的系统代码


how to code a system to track user learning progress using mysql and php

我想知道如何在使用mysql和php的在线测试中有效地记录和显示用户的进度。如果用户想跳过某些问题或关闭屏幕,我希望他们回来看看在问题列表项或其他项目旁边写一个"完成"的进度。

真正的问题或担忧是如何存储进度以及如何检查进度

为了这个问题,简化了我的数据库设计

表1:用户字段:id、username、pw、username和progress(是的,我在这里有一个名为进度的字段)

表2:问题字段:id、课程、问题、提示、答案

因此,如果用户完成了一个问题,那么在进度字段中,我会在其中添加question_id。

在带有问题列表的主页上,我会在用户id传递到页面后抓取其进度字段,因此…

select progress from user where id = $user_id

我可能会得到所有这些数组和所有已完成问题的id

然后,我必须为每个问题做一个if语句"if question id=progress[id],然后回显"completed"之类的语句。

这看起来有效吗?否则你会怎么做?我很感激任何能做这类事情的在线教程,这样我就能更好地了解发生了什么。感谢

我会将回答的问题存储在他们自己的表中。

question_id | user_id
    1          1
    2          1
    13         1

现在你可以有效地获得所有已完成的问题

SELECT q.* 
FROM questions q
INNER JOIN answered_questions aq ON aq.question_id = q.id AND aq.user_id = 1;

或尚未完成的问题

SELECT q.* 
FROM questions q
LEFT JOIN answered_questions aq ON aq.question_id = q.id AND aq.user_id = 1
WHERE aq.id IS NULL;