本文目录一览:
- 1、PHP考试系统怎么实现在同一页面提交后,实现随机出题,并保证提交后,不再随机,要求试题和答案保持一致
- 2、题库有600题,我想随机选其中的100道,这100道不能重复, 算法
- 3、用php+mysql做一个题库系统,随机抽取五百题左右生成考试卷,最有效率的做法是什么?
- 4、PHP考试系统怎么实现随机出卷,并且提交是同一页面,提交后给出题目与对应答案的对错情况。主要是怎么在
- 5、PHP 考试系统怎么生成随机试题,求代码写法.以选择题为例说明一下就行,假如从10个里抽3个,怎么在提交之
- 6、用PHP做一个答题系统。求救啊~~~~
PHP考试系统怎么实现在同一页面提交后,实现随机出题,并保证提交后,不再随机,要求试题和答案保持一致
用sesssion保存答过的题目id
每次选题前,先从session取出已答题目id跟所有题目id做一个差集,array_diff()可以计算数据差集。
新的题目从这个差集里随机选取。
至于试题和答案对应关系,做好答案和试题id的关联关系就行。
题库有600题,我想随机选其中的100道,这100道不能重复, 算法
就是将600题放在数组里,然后调用shuffle这个PHP函数将数组打乱,取前100项就是需要的100题
至于这个打乱的算法,大致是这样
for (i=0;i600;++i) {
a=myarray[i];
j=rand(i,600-1);
myarray[i]=myarray[j];
myarray[j]=a;
}
用php+mysql做一个题库系统,随机抽取五百题左右生成考试卷,最有效率的做法是什么?
php里面有array_rand函数,你要是一道题一道题的读出来,或许也可以尝试一下。但是要是一下子都读出来,即便这个函数效率可以的话,随机取出id数组,查询 “where id in 数组” 就不如直接在数据库里随机抽取记录。
如何从数据表里随机抽取记录呢,想想办法还是有一些,就是不知道效率如何。有的是说用max_id*rand(),那一条一条抽取还是可以的。怎么批量随机抽取呢,可以试着排序,然后选取前500题,排序可以想办法用一些函数(选取一些执行效率高的),如何md5,sha1,这种。如果为了使结果更具有随机性,可以把字段值再与一个随机数运算一下。仅供参考。
========================
我想你还是用array_rand随机抽500个id存到数组,然后遍历数组吧。这样也避免了题目重复。在数据库里如果一次一条记录随机抽取,要考虑碰巧重复的问题。批量选取你就按上面我说的试试。
PHP考试系统怎么实现随机出卷,并且提交是同一页面,提交后给出题目与对应答案的对错情况。主要是怎么在
并发访问量不大的话,在生成题目的同时,生成答案,将生成的答案直接写入$_SESSION。
并发访问量大的话,给每条题目一个ID,提交时,同时提交ID和答案,根据ID到数据库中逐条比对。
如果只是练习的话,安全性要求不高,直接将js加密,再将答案加密,直接发送到客户端Cookie,将考试结果再加密,返回服务器。这种性能最好。
PHP 考试系统怎么生成随机试题,求代码写法.以选择题为例说明一下就行,假如从10个里抽3个,怎么在提交之
很简单,给你一个思路
你在数据库里面放10个题,
id questions options right_answer
1 china 是指哪个国家? A:中国;B:日本;C:美国 A
... ................ ............. ...
这样你从数据库中读取全部数据出来;
为了实现随机性,你可以用一个数组
?php
$query=$mysql_query("select * from '表名'");
$results=$mysql_fetch_row($query);
$rand=array_rand($results,3);//取出随机的三个问题,注意这里取得是三个键值
$question=array($result[$rand[0]],$result[$rand[1]],$result[$rand[2]]);//将取出的三个问题放进一个数组中
?
form action="目标地址(此处用本页面地址)" method="post"
?php
foreach($question as $values)
{
$options=explode(";",$values['options']);//用“;”将选项分割存进数组
echo $values['questions'];//显示题目
for($i=0;$icount($options);$i++){
echo "input type='radio' name=".$choice[$valest['id']]." value='A' ".$options[i]." /br";//输出选项
}
echo "----------------------------------------";//题目之间分隔符
}
//下面的代码是你接受form表单的页面,如果是本页面就直接接着上面的代码写
if(!empty($_POST[$choice]))
{
foreach($_POST[$choice] as $key= $data)
{
$question_id=$key;
$user_choice=$data;
if(mysql_query("select * from '表名' where id=".$key."and right_answer='".$data."'"))
{
//答案对如何处理。。。。
}
else
{
//答案不对处理办法。。。。
}
}
}
?
/form
随手现写的代码,可能你里面有错误,但是思路你可以借鉴下~
用PHP做一个答题系统。求救啊~~~~
设置HTML页面,post取值并与正确答案对比,正确的就执行分数加1,这样就可以得到总分了