ASP的一个难题

来源:百度知道 编辑:UC知道 时间:2024/09/22 01:50:37
197个试题,1个会员登录程序,
登录后可以做试题,每次随机抽取1道试题来做,做过了的不会再被抽到.
做完后,点击退出按钮,就可以将做过了的题目全部重置,在下次做的时候又会被随机抽取到.因此我在数据库了设置了一个字段,"do!",当点击退出时对数据库所有do字段里为1的都更新为0,因为没做过是0.
但是怎样区分会员啊?因为每个会员做的题目肯定都是从同个数据库里读取的,假如其中一个会员做完了点击"退出"后,数据库此时已经全部更新为没做过了,也就是do字段都变0了,那别的会员刚好做到一半,有一半的题目do字段已经是1了,这样一更新,不是混乱了吗?这里怎样区分啊?
希望高手指教`在线等
1楼和3楼的思路差不多的,但是有没有想过,我的试题就算不无限条,就是200条好了,要用split函数去拆分再进行逐个去比较验证有没有被抽取过,要耗费很大的资源啊,何况以后试题增加到更多呢?那怎么办?
---------------------------------------------------
后来我想了下,自己想出了个办法,就是在试题的表里加了一个user字段,就是按照登录的user,来显示该user的所有试题包括做过没做过的,然后因为之前创建的do字段,抽取题目时,只会查找到do=0并且user=登录进来的会员,这样就很对应了.然后重置题目让do=1的题目变为do=0时,也可以进行对应的user条件来更新do.就不会影响到其他user了.另外添加记录,修改记录,都附加一个user条件,就都可以进行操作了.只是这样做有个缺点,就是目前在数据库里的批量题目,怎样首先让他们变成每个用户都目前拥有的,当前数据库的题量是197道,为此我又自己编了一段代码,进行对应的user添加记录.呵呵,目前只有这个办法,我实在想不出别的办法.不过总算能达到效果了.希望对大家有帮助,多谢各位热心朋友
谢谢大家了.后来我已经想到了.按照字段去进行增删改查的操作..虽然我自己想出来了.还是吧分给第一个回答有用的朋友了

当然是不能这样处理的,不能抽到同样的题目,是对于同一个会员来说的。会员A在做试题的时候,做过的那些题目,对于会员B来说,是可以被抽到的。

可以考虑这样的方式来处理,某个会员登录开始做试题时,用session变量来记录抽到过的试题编号,例如第一题抽到的编号是1,假设用来记录编号的session为session("do"),那么此时session("do")="1",在抽取第二题的时候,先判断编号是否为1,否则抽出来,假如抽到试题2,则再保存编号2,此时session("do")=session("do")&",2",则session("do")="1,2"。判断编号是否被抽取过的,可以session("do")使用split函数转换为数组来处理。这样,对于任一个会员做过的试题,都是不会互相干扰到的。

另外,可以这样一次过抽取N道题目,抽取到的编号是唯一的,取得编号之后,再逐条显示题目就可以了。

do! 和 username 配合记录
username do!
zhangsan 1
zhangsan 2
nihao 1
记录 张三做过1 2 你好做过1

你可以新建一个表,专门用来存储会员做过试题的结果
然后对于随机抽取的话你可以用newsid()来读取出来

user,里面最长可以写多少字符啊,用这个来判断好像也不太理想

非常简单的一道题!还说难?随机的你都会了,我就讲讲重点吧,
解法:
1、设数据库有shiti、do、user三个字段
2、会员登录后,随机抽题,这步抽题有个条件,user=该用户名且do=1的记录不会被抽中,做完后该题的do=1和user=该用户名,表示该用户做过该题,
(条件语句:not rst.user=user and rsr.do=1 )
3、退出,上面明白就很简单了,找到该用户的记录,更新user和do的值为空,
满足条件(条件