1个回答
展开全部
我只说简单的吧 首先设计数据表questions,questions表包括三个字段,id,question,answer 分别是,题目ID,题目,题目答案 然后在前台 <?php $num=array(); //保存题目数的数组 for($i=0;$i<$question_num;$i++) //$question_num是要读取的题目数量 { $b=mt_rand(0,$max_questionID); //这里$max_questionID是说你的数据表中一共几道题。 while(in_array($b,$num)) { $b=mt_rand(0,$max_questionID); //这个循环是为了防止生成重复的题目号 } $num[]=$b; } ?> 这样我们就得到了一个保存着要读取的题目号的数组; 然后就可以连接数据库进行读取了 <?php mysql_connect("","",""); mysql_select_db('db'); mysql_query('SET NAMES gb2312'); foreach($num as $value) { $string.=$value.','; } $string=substr($string,0,-1); $sql="select question,answer from questions where id in ($string)"; $r=mysql_query($sql); $answer=array(); $i=0; while($row=mysql_fetch_array($r)) { echo $row['question'].'<br>'; $answer[$i][]=$row['answer']; //把答案保存进一个二维数组 $i++; } $fname=mt_rand(0,1000); $fp=fopen($fname,'w'); fwrite($fp,serialize($answer)); //把序列化后的答案写入一个随机生成的文件中; fclose($fp); ?> 添加题目就不用我说了吧?插入数据呗。。。很简单,不啰嗦了 然后是得分是么? 前台设计的时候要注意,单选框的名字要是一个数组才行,<input type="radio" name="answer[]" value="a"/>类似这样的,并且创建一个隐藏域<input type="hidden" value="<? echo $fname ?>" name="fname" />这是为了能够获得此次考试对应的答案 后台就可以通过这个数组来获取回答者的答案并且进行判断了 <?php $answer=$_POST['answer']; $fname=$_POST['fname']; $fp1=fopen($fname,'r'); $content=fread($fp); fclose($fp1); $rightanswer=unserialize($content); 剩下得就是判断提交的答案是否与正确答案相同了,然后加分数,不用啰嗦了吧? ?>
求采纳
求采纳
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询