首页 > 开发 > PHP > 正文

如何使用jQuery+PHP+MySQL来实现一个在线测试项目

2024-05-04 22:37:26
字体:
来源:转载
供稿:网友

在上一篇文章中,我们介绍了使用jQuery实现的测试题效果。那么本文将结合实例给大家介绍如何使用jQuery+PHP+MySQL来实现在线测试题,包括动态读取题目,答题完毕后台评分,并返回答题结果。这是一篇WEB综合应用文章,建议阅读本文的您应该具备HTML,jQuery以及PHP和MySQL等基本知识。

quiz.php

在这里为了讲解方便,我将php和HTML混写在quiz.php文件中。首先和本站上篇文章:jQuery实现的测试答题功能一样,载入jQuery库和quizs.js文件,然后在适当的位置加上测试题html结构。

<div id="quiz-container"></div> 

我们要在页面加载的时候将题目信息读取出来,并且给jQuery调用显示。题目信息来自数据库,我们可以先在数据表quiz中加入题目及其答案选项信息。
我们通过构造SQL语句,使用PHP查询数据库,读取题目和答案选项信息,注意这个时候我们不需要读取正确答案。然后将题目信息以JSON格式赋给变量$json。

<?php include_once("connect.php");//连接数据库  $sql = "select * from quiz order by id asc"; $query = mysql_query($sql); //查询数据 while($row=mysql_fetch_array($query)){   $answers = explode('###',$row['answer']); //将答案选项分开   $arr[] = array(     'question' => $row['id'].'、'.$row['question'], //题目     'answers' => $answers //答案选项   ); } $json = json_encode($arr); //转换json格式 ?> 

我们得到了一串json格式的数据,然后就像上一篇文章介绍的一样,调用jquizzy(),方法如下:

$(function(){   $('#quiz-container').jquizzy({     questions: <?php echo $json;?>, //试题信息     sendResultsURL: 'data.php' //结果处理地址   }); }); 

这样,我们再来运行网页quiz.php,是不是生成了一个测试题,查看源代码,我们只能看到json数据,却不能看到试题对应的答案部分。

data.php

在调用测试题的时候,有个选项sendResultsURL,它是在用户打完题,点击“完成”按钮时,向后台data.php发送一个Ajax交互请求,data.php会根据用户的答题情况,比对正确答案,然后给出用户所得分数。

include_once("connect.php"); //连接数据库  $data = $_REQUEST['an']; //获取答题信息 $answers = explode('|',$data); //分析数据 $an_len = count($answers)-1; //题目数  $sql = "select correct from quiz order by id asc"; $query = mysql_query($sql); //查询表 $i = 0; $score = 0; //初始得分 $q_right = 0; //答对的题数 while($row=mysql_fetch_array($query)){   if($answers[$i]==$row['correct']){ //比对正确答案     $arr['res'][] = 1; //正确     $q_right += 1; //正确答题数+1   }else{     $arr['res'][] = 0; //错误   }   $i++; } $arr['score'] = round(($q_right/$an_len)*100); //计算总得分 echo json_encode($arr);             
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表