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 相关文章推荐
PHP中的float类型使用说明
Jul 27 PHP
php利用iframe实现无刷新文件上传功能的代码
Sep 29 PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
Mar 06 PHP
php shell超强免杀、减少体积工具实现代码
Oct 16 PHP
PHP Error与Logging函数的深入理解
Jun 03 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
Jun 28 PHP
模板引擎smarty工作原理以及使用示例
May 25 PHP
Php连接及读取和写入mysql数据库的常用代码
Aug 11 PHP
php内嵌函数用法实例
Mar 20 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
Dec 09 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
May 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 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
PHP中文编码小技巧
2014/12/25 PHP
php 使用curl模拟ip和来源进行访问的实现方法
2017/05/02 PHP
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
Bootstrap基础学习
2015/06/16 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
jQuery实现点击关注和取消功能
2017/07/03 jQuery
js编写简单的计时器功能
2017/07/15 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
Python open()文件处理使用介绍
2014/11/30 Python
python中requests模块的使用方法
2015/04/08 Python
用TensorFlow实现多类支持向量机的示例代码
2018/04/28 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
python生成九宫格图片
2018/11/19 Python
详解python中的hashlib模块的使用
2019/04/22 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
2019/08/05 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
html5 音乐播放器 audio 标签使用概述
2013/07/15 HTML / CSS
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
澳大利亚家具商店:Freedom
2020/12/17 全球购物
传播学毕业生求职信
2013/10/11 职场文书
大学生就业自荐信
2013/10/26 职场文书
加油口号大全
2014/06/13 职场文书
员工培训协议书
2014/09/15 职场文书
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL
oracle重置序列从0开始递增1
2022/02/28 Oracle
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL