php+mysql开发的最简单在线题库(在线做题系统)完整案例


Posted in PHP onMarch 30, 2019

本文实例讲述了php+mysql开发的最简单在线题库。分享给大家供大家参考,具体如下:

题库,对于教育机构,学校,在线教育,是很有必要的,网上也有不少的第三方在线题库系统,但是本次案例,会让有需要的人了解题库的开发思路,其实很简单,无非就是一个表单验证,数据库验证。

1、先构建表单数据

2、把表单数据通过get或者post方式提交到表单验证页面,和数据库进行匹配

3、返回结果,答案正确或者错误

构建表单:

index.php

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="format-detection" content="telephone=no">
  <title>题库</title>
  <style type="text/css">
    *{list-style: none;margin:0px;padding: 0px;}
    #tiku{
      width: 300px;
      margin:10px auto;
    }
    #tiku ul li{
      float: left;
    }
  </style>
</head>
<body>
<?php
//获取数据库配置
require_once("config.php");
//连接数据库
$con = mysql_connect($host,$username,$password);
//设置数据库字符集 
mysql_query("SET NAMES UTF8");
//查询数据库
mysql_select_db($db, $con);
//查询数据库
//获取最新的1条数据
$all = mysql_num_rows(mysql_query("select * from $tb"));
//定义分页所需的参数
$lenght=1;               //每页显示的数量
@$page=$_GET['page']?$_GET['page']:1;  //当前页
$offset=($page-1)*$lenght;       //每页起始行编号
$allpage=ceil($all/$lenght);      //所有的页数-总数页
$prepage=$page-1;            //上一页    
if($page==1){
  $prepage=1;             //特殊的是当前页是1时上一页就是1
  }
$nextpage=$page+1;
if($page==$allpage){
  $nextpage=$allpage;        //特殊的是最后页是总数页时下一页就是总数页
  }
$sql="select * from $tb order by id ASC limit {$offset},{$lenght}";
$rest=mysql_query($sql);
while($row = mysql_fetch_assoc($rest))
  {
    $id = $row["id"];
    $title = $row["title"];
    $A = $row["answer_A"];
    $B = $row["answer_B"];
    $C = $row["answer_C"];
    $D = $row["answer_D"];
    $true = $row["true"];
    $score = $row["score"];
  }
?>
<div id="tiku">
  <form action="check.php" method="get">
    <p><?php echo $title;?></p>
    <input type="radio" name="xuanxiang" value="<?php echo $A;?>">A:<?php echo $A;?><br>
    <input type="radio" name="xuanxiang" value="<?php echo $B;?>">B:<?php echo $B;?><br>
    <input type="radio" name="xuanxiang" value="<?php echo $C;?>">C:<?php echo $C;?><br>
    <input type="radio" name="xuanxiang" value="<?php echo $D;?>">D:<?php echo $D;?><br><br>
    <input type="hidden" name="id" value="<?php echo $id;?>">
    <button>提交</button>
  </form>
</div>
  <br/>
  <?php
  echo "<div id='tiku'>";
    echo "<ul>";
      echo "<li><a href='next.php?page=$prepage'>上一题</a></li>";
      echo "<li><a href='next.php?page=$nextpage'>下一题</a></li>";
    echo "</ul>";
  echo "<div>";
  echo "<br/>";
  echo "<p class='fenye_tips'>共".$allpage."道题,当前是第".$page."题</p>";
  echo "<br/><br/>";
  echo "</div>";
  ?>
</body>
</html>

表单接收

check.php

<?php
header("Content-type:text/html;charset=utf-8");
//获取数据库配置
require_once("config.php");
//连接数据库
$con = mysql_connect($host,$username,$password);
//设置数据库字符集 
mysql_query("SET NAMES UTF8");
//查询数据库
mysql_select_db($db, $con);
//获取数据
$xuanxiang = $_GET["xuanxiang"];
$id = $_GET["id"];
if (empty($xuanxiang)) {
  echo "<script>alert('请选择一个答案!');history.go(-1);</script>";
}else{
  //查询数据库
  $result = mysql_query("SELECT * FROM $tb WHERE id =".$id);
  while($row = mysql_fetch_array($result))
  {
    $true = $row["true"];
    $next_id = $id+1;
    if($xuanxiang == $true){
      echo "<script>alert('正确!得5分!');location.href='next.php?page=$next_id';</script>";
    }else{
      echo "<script>alert('错了!扣5分!');history.go(-1);</script>";
    }
  }
}
?>

数据库配置

config.php

<?php
//配置文件 - BY TANKING
$host="数据库地址";
$username="账号";
$password="密码";
$db="数据库名";
$tb = "表名";
?>

next.php

下一题

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="format-detection" content="telephone=no">
  <title>题库</title>
  <style type="text/css">
    *{list-style: none;margin:0px;padding: 0px;}
    #tiku{
      width: 300px;
      margin:10px auto;
    }
    #tiku ul li{
      float: left;
    }
  </style>
</head>
<body>
<?php
//获取数据库配置
require_once("config.php");
//连接数据库
$con = mysql_connect($host,$username,$password);
//设置数据库字符集 
mysql_query("SET NAMES UTF8");
//查询数据库
mysql_select_db($db, $con);
//查询数据库
//获取最新的1条数据
$all = mysql_num_rows(mysql_query("select * from $tb"));
//定义分页所需的参数
$lenght=1;               //每页显示的数量
@$page=$_GET['page']?$_GET['page']:1;  //当前页
$offset=($page-1)*$lenght;       //每页起始行编号
$allpage=ceil($all/$lenght);      //所有的页数-总数页
$prepage=$page-1;            //上一页    
if($page==1){
  $prepage=1;             //特殊的是当前页是1时上一页就是1
  }
$nextpage=$page+1;
if($page==$allpage){
  $nextpage=$allpage;        //特殊的是最后页是总数页时下一页就是总数页
  }
$sql="select * from $tb order by id ASC limit {$offset},{$lenght}";
$rest=mysql_query($sql);
while($row = mysql_fetch_assoc($rest))
  {
    $id = $row["id"];
    $title = $row["title"];
    $A = $row["answer_A"];
    $B = $row["answer_B"];
    $C = $row["answer_C"];
    $D = $row["answer_D"];
    $true = $row["true"];
    $score = $row["score"];
  }
?>
<div id="tiku">
  <form action="check.php" method="get">
    <p><?php echo $title;?></p>
    <input type="radio" name="xuanxiang" value="<?php echo $A;?>">A:<?php echo $A;?><br>
    <input type="radio" name="xuanxiang" value="<?php echo $B;?>">B:<?php echo $B;?><br>
    <input type="radio" name="xuanxiang" value="<?php echo $C;?>">C:<?php echo $C;?><br>
    <input type="radio" name="xuanxiang" value="<?php echo $D;?>">D:<?php echo $D;?><br><br>
    <input type="hidden" name="id" value="<?php echo $id;?>">
    <button>提交</button>
  </form>
</div>
  <br/>
  <?php
  echo "<div id='tiku'>";
    echo "<ul>";
      echo "<li><a href='next.php?page=$prepage'>上一题</a></li>";
      echo "<li><a href='next.php?page=$nextpage'>下一题</a></li>";
    echo "</ul>";
  echo "<div>";
  echo "<br/>";
  echo "<p class='fenye_tips'>共".$allpage."道题,当前是第".$page."题</p>";
  echo "<br/><br/>";
  echo "</div>";
  ?>
</body>
</html>

数据库结构

title --------题目
answer_A -----答案A
answer_B -----答案B
answer_C -----答案C
answer_D -----答案D
true ---------正确答案
score --------得分

php+mysql开发的最简单在线题库(在线做题系统)完整案例

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
基于mysql的论坛(2)
Oct 09 PHP
用PHP读取RSS feed的代码
Aug 01 PHP
一个PHP验证码类代码分享(已封装成类)
Jul 17 PHP
ueditor 1.2.6 使用方法说明
Jul 24 PHP
PHP 如何获取二维数组中某个key的集合
Jun 03 PHP
ThinkPHP提交表单时默认自动转义的解决方法
Nov 25 PHP
PHP使用内置dir类实现目录遍历删除
Mar 31 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
PHP实现根据数组某个键值大小进行排序的方法
Mar 13 PHP
PHP CURL中传递cookie的方法步骤
May 09 PHP
PHP底层运行机制与工作原理详解
Jul 31 PHP
PHP中多字节字符串操作实例详解
Aug 23 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
Mar 30 #PHP
浅谈php调用python文件
Mar 29 #PHP
PHP数据对象映射模式实例分析
Mar 29 #PHP
PHP模版引擎原理、定义与用法实例
Mar 29 #PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
Mar 29 #PHP
PHP中ltrim()函数的用法与实例讲解
Mar 28 #PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
Mar 28 #PHP
You might like
巧用php中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
javascript中声明函数的方法及调用函数的返回值
2014/07/22 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
详解JavaScript中Date.UTC()方法的使用
2015/06/12 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
mint-ui在vue中的使用示例
2018/04/05 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
Python实战小程序利用matplotlib模块画图代码分享
2017/12/09 Python
对Python 语音识别框架详解
2018/12/24 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
python实现简单图片物体标注工具
2019/03/18 Python
python获取地震信息 微信实时推送
2019/06/18 Python
python列表推导式操作解析
2019/11/26 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
使用pandas库对csv文件进行筛选保存
2020/05/25 Python
浅谈css3新单位vw、vh、vmin、vmax的使用详解
2017/12/01 HTML / CSS
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
JS原生实现轮播图的几种方法
2021/03/23 Javascript
药学专业学生的自我评价分享
2014/02/06 职场文书
环保专项行动方案
2014/05/12 职场文书
会计学专业自荐信
2014/06/25 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
骨干教师申报材料
2014/12/17 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
雨中的树观后感
2015/06/03 职场文书
今日说法观后感
2015/06/08 职场文书
React列表栏及购物车组件使用详解
2021/06/28 Javascript
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android