要求说明:
本系统为答题系统,每天用户登录系统后进行答题,通过后台上传完毕题库后,每天用户上线抽取对应的题目进行作答,并获得相应的得分。
关键点:
每天用户答题后,第二天及第N天来答题,不能在抽到之前已经抽到过的题目,用户个体之间相互独立,互不干扰。
解决方式:
数据库构建抽题表:choutibiao,题库表:timu,两表之间通过timuid(题目id)进行关联,用户每天抽的题目在抽题表中进行相应的记录。
使用sql查询not in条件进行对应的比对,确保同一用户不会抽到同样的题目。
示例代码:(注:后台框架为thinkphp框架,M方法为数据库操作方法,在此不做细述)
$where['id'] = array('exp','not in (select timuid from choutibiao where uid="8")');
//在抽题表中查询用户id为8的用户已经抽过的题目,并设置查询条件为not in,如果要查询包含的数据,则使用in进行条件选择
$chouti=M('timu')->where($where)->limit(1)->order('rand()')->field("id")->select();
//在题目表中查询排除上面已经抽过的题后的题目,并随即取出一题,这里可根据实际情况进行逻辑变动
var_dump($chouti);die;
//打印显示查看结果
总结:
通过in和not in的条件查询限制,解决系统中包含与未包含的情况。
网友评论