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的5个入手程序
Nov 23 PHP
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
Dec 05 PHP
PHP时间格式控制符对照表分享
Jul 23 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
ThinkPHP有变量的where条件分页实例
Nov 03 PHP
dedecms集成财付通支付接口
Dec 28 PHP
举例讲解PHP面对对象编程的多态
Aug 12 PHP
PHP对象链式操作实现原理分析
Oct 09 PHP
PHP反射机制原理与用法详解
Feb 15 PHP
Laravel-添加后台模板AdminLte的实现方法
Oct 08 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
Oct 10 PHP
深入浅析安装PhpStorm并激活的步骤详解
Sep 17 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
为PHP初学者的8点有效建议
2010/11/20 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
php工具型代码之印章抠图
2018/07/18 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
最新28个很棒的jQuery 教程
2011/05/28 Javascript
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
JQuery实现DIV其他动画效果的简单实例
2016/09/18 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
Python常用内置函数总结
2015/02/08 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
世界上最好的威士忌和烈性酒购买网站:The Whisky Exchange
2016/11/20 全球购物
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
Servlet方面面试题
2016/09/28 面试题
优秀的导游求职信范文
2014/04/06 职场文书
关爱残疾人演讲稿
2014/05/24 职场文书
超市客服工作职责
2014/06/11 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
法制教育观后感
2015/06/17 职场文书
运动会致辞稿
2015/07/29 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android