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

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

        本文将结合实例给大家介绍如何使用jQuery+PHP+MySQL来实现在线测试题,包括动态读取题目,答题完毕后台评分,并返回答题结果。

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

  quiz.php

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

  ?

1

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

  我们要在页面加载的时候将题目信息读取出来,并且给jQuery调用显示。题目信息来自数据库,我们可以先在数据表quiz中加入题目及其答案选项信息。

  我们通过构造SQL语句,使用PHP查询数据库,读取题目和答案选项信息,注意这个时候我们不需要读取正确答案。然后将题目信息以JSON格式赋给变量$json。

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14

<?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(),方法如下:

  ?

1
2
3
4
5
6

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

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

  data.php

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

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

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);

  data.php中,首先连接数据库,接收处理参数an,an是前端用户答题的答案,然后查询数据表,将用户提交的答案与数据表中题目的正确答案进行对比,对比后做相应的处理,并计算出用户答题所得分数,最后输出返回json格式数据给前台调用。

  quizs.js

  我们对js代码做了修改,主要针对前后台ajax交互部分,quizs.js中核心部分如下:

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

if (config.sendResultsURL !== null) {
var collate = [];
var myanswers = '';
//获取用户所答题的答案
for (r = 0; r < userAnswers.length; r++) {
collate.push('{"questionNumber":"' + parseInt(r + 1, 10) + '", "userAnswer":"' + userAnswers[r] + '"}');
myanswers = myanswers + userAnswers[r]+'|';
}
 
//Ajax交互
$.getJSON(config.sendResultsURL,{an:myanswers},function(json){
if(json==null){
alert('通讯失败!');
}else{
var corects = json['res'];
$.each(corects,function(index,array){
resultSet += '<div class="result-row">' + (corects[index] === 1 ? "<div class='correct'>#"+(index + 1)+"<span></span></div>": "<div class='wrong'>#"+(index + 1)+"<span></span></div>")+'</div>';
});
resultSet = '<h2 class="qTitle">' + judgeSkills(json.score) + '<br/> 您的分数: ' + json.score + '</h2><div class="jquizzy-clear"></div>' + resultSet + '<div class="jquizzy-clear"></div>';
 
 
superContainer.find('.result-keeper').html(resultSet).show(500);
}
});
}

  用户答题后,将用户所答题的答案组成字符串如“1|2|4|1|3|”的形式,然后通过$.getJSON将答案给参数an提交到后台,后台PHP处理比对正确答案后,将比对结果返回过来,返回结果如:{"res":[1,0,1,1,0],"score":60},res是答题比对结果,分别表示五道题的答题结果,1表示答题正常,0表示答题错误,score表示得分。然后将返回的结果处理,得出每道题的评判结果和总得分,生成对应的html结构。

  MySQL

  最后,附上mysql数据表quiz的结构:

  ?

1
2
3
4
5
6
7

CREATE TABLE IF NOT EXISTS `quiz` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`question` varchar(100) NOT NULL,
`answer` varchar(500) NOT NULL,
`correct` tinyint(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

  你可以往表中添加信息,也可以直接导入源码包中的quiz.sql文件。

  以上所述就是本文的全部内容了,希望大家能够喜欢。

时间: 2024-09-15 18:55:01

如何使用jQuery+PHP+MySQL来实现一个在线测试项目的相关文章

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

在上一篇文章中,我们介绍了使用jQuery实现的测试题效果.那么本文将结合实例给大家介绍如何使用jQuery+PHP+MySQL来实现在线测试题,包括动态读取题目,答题完毕后台评分,并返回答题结果.这是一篇WEB综合应用文章,建议阅读本文的您应该具备HTML,jQuery以及PHP和MySQL等基本知识. quiz.php 在这里为了讲解方便,我将php和HTML混写在quiz.php文件中.首先和本站上篇文章:jQuery实现的测试答题功能一样,载入jQuery库和quizs.js文件,然后在

jQuery+PHP+MySQL来实现一个在线考试功能

在上一篇文章中,我们介绍了使用jQuery实现的测试题效果.那么本文将结合实例给大家介绍如何使用jQuery+PHP+MySQL来实现在线测试题,包括动态读取题目,答题完毕后台评分,并返回答题结果.这是一篇WEB综合应用文章,建议阅读本文的您应该具备HTML,jQuery以及PHP和MySQL等基本知识.   quiz.php 在这里为了讲解方便,我将php和HTML混写在quiz.php文件中.首先和本站上篇文章:jQuery实现的测试答题功能一样,载入jQuery库和quizs.js文件,然

PHP+jQuery+Ajax+Mysql实现发表心情功能

  我们在浏览网站文章或帖子后,需要表达自己浏览后的心情感受,在很多网站都提供了给用户发表心情的功能,通过这个功能可以直观统计分析文章或帖子的浏览者的心情感受数据.在本文中,您将了解到,如何实现通过点击心情图标,即刻发表自己的心情. 下载 http://bbs.php100.com/read-htm-tid-391083-ds-1.html  本文通过实例讲解使用PHP+jQuery+Ajax+Mysql相结合,实现了用户发表心情的功能,操作简单,实用性强,是一篇将WEB知识进行综合应用的文章,

jquery 菜单移动-这是一个菜单移动的操作,但是顺序a向上移动有错误,求指导,请问怎么控制不超出父节点

问题描述 这是一个菜单移动的操作,但是顺序a向上移动有错误,求指导,请问怎么控制不超出父节点 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 无标题文档 #wrap{margin:20px auto;width: 500px;} #wrap li{list-st

jQuery+PHP+MySQL二级联动下拉菜单实例讲解_jquery

二级联动下拉菜单选择应用在在很多地方,比如说省市下拉联动,商品大小类下拉选择联动.本文将通过实例讲解使用jQuery+PHP+MySQL来实现大小分类二级下拉联动效果.实现效果:当选择大类时,小类下拉框里的选项内容也随着改变. 实现原理:根据大类的值,通过jQuery把值传给后台PHP处理,PHP通过查询MySQl数据库,得到相应的小类,并返回JSON数据给前端处理.XHTML首先我们要建立两个下拉选择框,第一个是大类,第二个是小类.大类的值可以是预先写好,也可以是从数据库读取. <label>

PHP+jQuery+Ajax+Mysql如何实现发表心情功能_javascript技巧

实现发表心情功能通过php+jquery+ajax+mysql技术,大致流程我先给大家理下:主页index.html页面通过ajax获取心情图标及柱状图相关数据,当用户点击其中的一个心情图标时,向后台php发送请求,php对用户cookie验证(是否是首次提交),然后将数据库对应的心情字段内容加1,成功后返回前端页面,告诉首页index页面发表成功,并调整柱状图和统计数据. 请看效果图: html: 先看HTML,我们在index.html中放置一个#msg,用来显示操作结果信息,#mood是操

MySQL怎样处理一个溢出的磁盘

mysql 当出现一个磁盘溢出的情况时,MySQL做下列事情: 它每分钟检查一次看是否有足够空间写入当前行.如果有足够的空间,它继续好像发生什么事情. 每6分钟它将有关磁盘溢出的警告写入日志文件. 为了缓和这个问题,你可以采取下列行动: 继续,你只需释放足够的空闲磁盘空间以便插入所有记录. 放弃线程,你必须发一个mysqladmin kill到线程.在下一次检查磁盘时,线程将被放弃(在1分钟内). 注意,其他线程可能正在等待引起"磁盘溢出"条件的表.如果你有几个"锁定的&qu

使用jQuery和HTML5等开发一个天气预报web应用

开发一个天气预报web应用-jquery天气预报插件"> 今天我们介绍来自tutorialzine的一个HTML5/jQuery/Yahoo API的开发教程,在这篇文章中我们将介绍如何使用HTML5的Geolocation,jQuery和YahooAPI来开发一个天气预报web应用. 如果你不熟悉HTML5的Geolocation(地理位置服务). 首先你需要得到Yahoo API的API key,你可以通过如下地址取得对应的API key: https://developer.apps

mysql-请问往MYSQL里导入一个SQL表,为什么会报这个错误?

问题描述 请问往MYSQL里导入一个SQL表,为什么会报这个错误? 开始导入----------> 然后就提示--------> 文件路径: 我选择的路径没错额:D:源代码下载存储day7-mysql多表资料与作业EMPDEPT.sql 信息日志如下: [Err] 1051 - Unknown table 'dept' [Err] -- ---------------------------- -- Table structure for DEPT DROP TABLE DEPT; CREAT