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中定义网站根目录的常用方法
Aug 08 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 PHP
Laravel 5.0 发布 新版本特性详解
Feb 10 PHP
php自动更新版权信息显示的方法
Jun 19 PHP
Yii清理缓存的方法
Jan 06 PHP
JSON字符串传到后台PHP处理问题的解决方法
Jun 05 PHP
php微信开发自定义菜单
Aug 27 PHP
php实现用户注册密码的crypt加密
Jun 08 PHP
php array_chunk()函数用法与注意事项
Jul 12 PHP
PHP中类与对象功能、用法实例解读
Mar 27 PHP
php中array_fill函数的实例用法
Mar 02 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获得当前的脚本网址
2007/12/10 PHP
php简单提示框alert封装函数
2010/08/08 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
php数组去除空值函数分享
2015/02/02 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
2016/07/28 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
js 小数取整的函数
2010/05/10 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
详解JS函数重载
2014/12/04 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
使用javascript提交form表单方法汇总
2015/06/25 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
JavaScript判断日期时间差的实例代码
2018/03/01 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
vue-openlayers实现地图坐标弹框效果
2020/09/24 Javascript
Python实现二分法算法实例
2015/02/02 Python
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
Python3 适合初学者学习的银行账户登录系统实例
2017/08/08 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
STRATHBERRY苏贝瑞包包官网:西班牙高级工匠手工打造
2020/11/10 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
什么是数据抽象
2016/11/26 面试题
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
个人党性分析材料
2014/12/19 职场文书
捐资助学感谢信
2015/01/21 职场文书
水知道答案观后感
2015/06/08 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS