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 相关文章推荐
PHPlet在Windows下的安装
Oct 09 PHP
phpfans留言版用到的install.php
Jan 04 PHP
在smarty模板中使用PHP函数的方法
Apr 23 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
解析php5配置使用pdo
Jul 03 PHP
php定义一个参数带有默认值的函数实例分析
Mar 16 PHP
php线性表的入栈与出栈实例分析
Jun 12 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
Aug 08 PHP
PHP类的封装与继承详解
Sep 29 PHP
PHP读取PPT文件的方法
Dec 10 PHP
PHP7新特性foreach 修改示例介绍
Aug 26 PHP
laravel 解决多库下的DB::transaction()事务失效问题
Oct 21 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长字符串定义方法
2012/07/12 PHP
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
php验证手机号码
2015/11/11 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
javascript中取前n天日期的两种方法分享
2014/01/26 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
AngularJS 过滤器(自带和自建)详解
2016/09/19 Javascript
JQuery学习总结【一】
2016/12/01 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
2016/12/29 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
js匿名函数使用&amp;传参(实例)
2017/09/08 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
解密Python中的描述符(descriptor)
2015/06/03 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
Python进行特征提取的示例代码
2020/10/15 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
美国折扣宠物药房:Total Pet Supply
2018/05/27 全球购物
中药专业大学生医药工作求职信
2013/10/25 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
获奖感言怎么写
2015/07/31 职场文书
Nginx+Tomcat实现负载均衡、动静分离的原理解析
2021/03/31 Servers
使用python求解迷宫问题的三种实现方法
2022/03/17 Python