首页 > 编程知识 正文

php实现题库随机出题,php题库编程题

时间:2024-04-24 11:43:08 阅读:333763 作者:EAAF

本文目录一览:

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,这样就可以得到总分了

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。