当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-14 12:44:57 浏览: 评论:0 

这篇文章主要介绍了php+mysql开发的最简单在线题库(在线做题系统)案例,结合完整实例形式分析了PHP结合MySQL数据库查询、判断实现的在线题库功能相关操作技巧,需要的朋友可以参考下。

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

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

1、先构建表单数据

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

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

构建表单:

index.php

  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge"
  6.   <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" /> 
  7.   <meta name="apple-mobile-web-app-capable" content="yes"
  8.   <meta name="apple-mobile-web-app-status-bar-style" content="black"
  9.   <meta name="format-detection" content="telephone=no"
  10.   <title>题库</title> 
  11.   <style type="text/css"
  12.     *{list-style: none;margin:0px;padding: 0px;} 
  13.     #tiku{ 
  14.       width: 300px; 
  15.       margin:10px auto; 
  16.     } 
  17.     #tiku ul li{ 
  18.       float: left; 
  19.     } 
  20.   </style> 
  21. </head> 
  22. <body> 
  23. <?php 
  24. //获取数据库配置 
  25. require_once("config.php"); 
  26. //连接数据库 
  27. $con = mysql_connect($host,$username,$password); 
  28. //设置数据库字符集  
  29. mysql_query("SET NAMES UTF8"); 
  30. //查询数据库 
  31. mysql_select_db($db$con); 
  32. //查询数据库 
  33. //获取最新的1条数据 
  34. $all = mysql_num_rows(mysql_query("select * from $tb")); 
  35. //定义分页所需的参数 
  36. $lenght=1;               //每页显示的数量 
  37. @$page=$_GET['page']?$_GET['page']:1;  //当前页 
  38. $offset=($page-1)*$lenght;       //每页起始行编号 
  39. $allpage=ceil($all/$lenght);      //所有的页数-总数页 
  40. $prepage=$page-1;            //上一页     
  41. if($page==1){ 
  42.   $prepage=1;             //特殊的是当前页是1时上一页就是1 
  43.   } 
  44. $nextpage=$page+1; 
  45. if($page==$allpage){ 
  46.   $nextpage=$allpage;        //特殊的是最后页是总数页时下一页就是总数页 
  47.   } 
  48. $sql="select * from $tb order by id ASC limit {$offset},{$lenght}"
  49. $rest=mysql_query($sql); 
  50. while($row = mysql_fetch_assoc($rest)) 
  51.   { 
  52.     $id = $row["id"]; 
  53.     $title = $row["title"]; 
  54.     $A = $row["answer_A"]; 
  55.     $B = $row["answer_B"]; 
  56.     $C = $row["answer_C"]; 
  57.     $D = $row["answer_D"]; 
  58.     $true = $row["true"]; 
  59.     $score = $row["score"]; 
  60.   } 
  61. ?> 
  62. <div id="tiku"
  63.   <form action="check.php" method="get"
  64.     <p><?php echo $title;?></p> 
  65.     <input type="radio" name="xuanxiang" value="<?php echo $A;?>">A:<?php echo $A;?><br> 
  66.     <input type="radio" name="xuanxiang" value="<?php echo $B;?>">B:<?php echo $B;?><br> 
  67.     <input type="radio" name="xuanxiang" value="<?php echo $C;?>">C:<?php echo $C;?><br> 
  68.     <input type="radio" name="xuanxiang" value="<?php echo $D;?>">D:<?php echo $D;?><br><br> 
  69.     <input type="hidden" name="id" value="<?php echo $id;?>"
  70.     <button>提交</button> 
  71.   </form> 
  72. </div> 
  73.   <br/> 
  74.   <?php 
  75.   echo "<div id='tiku'>"
  76.     echo "<ul>"
  77.       echo "<li><a href='next.php?page=$prepage'>上一题</a></li>"
  78.       echo "<li><a href='next.php?page=$nextpage'>下一题</a></li>"
  79.     echo "</ul>"
  80.   echo "<div>"
  81.   echo "<br/>"
  82.   echo "<p class='fenye_tips'>共".$allpage."道题,当前是第".$page."题</p>"
  83.   echo "<br/><br/>"
  84.   echo "</div>"
  85.   ?> 
  86. </body> 
  87. </html> 

表单接收

check.php

  1. <?php 
  2. header("Content-type:text/html;charset=utf-8"); 
  3. //获取数据库配置 
  4. require_once("config.php"); 
  5. //连接数据库 
  6. $con = mysql_connect($host,$username,$password); 
  7. //设置数据库字符集  
  8. mysql_query("SET NAMES UTF8"); 
  9. //查询数据库 
  10. mysql_select_db($db$con); 
  11. //获取数据 
  12. $xuanxiang = $_GET["xuanxiang"]; 
  13. $id = $_GET["id"]; 
  14. if (emptyempty($xuanxiang)) { 
  15.   echo "<script>alert('请选择一个答案!');history.go(-1);</script>"
  16. }else
  17.   //查询数据库 
  18.   $result = mysql_query("SELECT * FROM $tb WHERE id =".$id); 
  19.   while($row = mysql_fetch_array($result)) 
  20.   { 
  21.     $true = $row["true"]; 
  22.     $next_id = $id+1; 
  23.     if($xuanxiang == $true){ 
  24.       echo "<script>alert('正确!得5分!');location.href='next.php?page=$next_id';</script>"
  25.     }else
  26.       echo "<script>alert('错了!扣5分!');history.go(-1);</script>"
  27.     } 
  28.   } 
  29. ?> 

数据库配置

config.php

  1. <?php 
  2. //配置文件 - BY TANKING 
  3. $host="数据库地址"
  4. $username="账号"
  5. $password="密码"
  6. $db="数据库名"
  7. $tb = "表名"
  8. ?> 

next.php

下一题

  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4.   <meta http-equiv="Content-Type" content="text/html; charset=utf-8"
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge"
  6.   <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" /> 
  7.   <meta name="apple-mobile-web-app-capable" content="yes"
  8.   <meta name="apple-mobile-web-app-status-bar-style" content="black"
  9.   <meta name="format-detection" content="telephone=no"
  10.   <title>题库</title> 
  11.   <style type="text/css"
  12.     *{list-style: none;margin:0px;padding: 0px;} 
  13.     #tiku{ 
  14.       width: 300px; 
  15.       margin:10px auto; 
  16.     } 
  17.     #tiku ul li{ 
  18.       float: left; 
  19.     } 
  20.   </style> 
  21. </head> 
  22. <body> 
  23. <?php 
  24. //获取数据库配置 
  25. require_once("config.php"); 
  26. //连接数据库 
  27. $con = mysql_connect($host,$username,$password); 
  28. //设置数据库字符集  
  29. mysql_query("SET NAMES UTF8"); 
  30. //查询数据库 
  31. mysql_select_db($db$con); 
  32. //查询数据库 
  33. //获取最新的1条数据 
  34. $all = mysql_num_rows(mysql_query("select * from $tb")); 
  35. //定义分页所需的参数 
  36. $lenght=1;               //每页显示的数量 
  37. @$page=$_GET['page']?$_GET['page']:1;  //当前页 
  38. $offset=($page-1)*$lenght;       //每页起始行编号 
  39. $allpage=ceil($all/$lenght);      //所有的页数-总数页 
  40. $prepage=$page-1;            //上一页     
  41. if($page==1){ 
  42.   $prepage=1;             //特殊的是当前页是1时上一页就是1 
  43.   } 
  44. $nextpage=$page+1; 
  45. if($page==$allpage){ 
  46.   $nextpage=$allpage;        //特殊的是最后页是总数页时下一页就是总数页 
  47.   } 
  48. $sql="select * from $tb order by id ASC limit {$offset},{$lenght}"
  49. $rest=mysql_query($sql); 
  50. while($row = mysql_fetch_assoc($rest)) 
  51.   { 
  52.     $id = $row["id"]; 
  53.     $title = $row["title"]; 
  54.     $A = $row["answer_A"]; 
  55.     $B = $row["answer_B"]; 
  56.     $C = $row["answer_C"]; 
  57.     $D = $row["answer_D"]; 
  58.     $true = $row["true"]; 
  59.     $score = $row["score"]; 
  60.   } 
  61. ?> 
  62. <div id="tiku"
  63.   <form action="check.php" method="get"
  64.     <p><?php echo $title;?></p> 
  65.     <input type="radio" name="xuanxiang" value="<?php echo $A;?>">A:<?php echo $A;?><br> 
  66.     <input type="radio" name="xuanxiang" value="<?php echo $B;?>">B:<?php echo $B;?><br> 
  67.     <input type="radio" name="xuanxiang" value="<?php echo $C;?>">C:<?php echo $C;?><br> 
  68.     <input type="radio" name="xuanxiang" value="<?php echo $D;?>">D:<?php echo $D;?><br><br> 
  69.     <input type="hidden" name="id" value="<?php echo $id;?>"
  70.     <button>提交</button> 
  71.   </form> 
  72. </div> 
  73.   <br/> 
  74.   <?php 
  75.   echo "<div id='tiku'>"
  76.     echo "<ul>"
  77.       echo "<li><a href='next.php?page=$prepage'>上一题</a></li>"
  78.       echo "<li><a href='next.php?page=$nextpage'>下一题</a></li>"
  79.     echo "</ul>"
  80.   echo "<div>"
  81.   echo "<br/>"
  82.   echo "<p class='fenye_tips'>共".$allpage."道题,当前是第".$page."题</p>"
  83.   echo "<br/><br/>"
  84.   echo "</div>"
  85.   ?> 
  86. </body> 
  87. </html> 

数据库结构

title --------题目

answer_A -----答案A

answer_B -----答案B

answer_C -----答案C

answer_D -----答案D

true ---------正确答案

score --------得分

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

Tags: php+mysql php在线做题系统

分享到: