PHP实现类似题库抽题效果


Posted in PHP onAugust 16, 2018

大家好,我顾某人又回来了,最近学了一点PHP,然后就想写个简单小例子试试,于是就写了一个类似于从题库抽题的东西,大概就是先输入需要抽题的数量,然后从数据库中随机抽取题目。

希望各位大佬轻喷。

假设我现在有这样一个题库:

PHP实现类似题库抽题效果

啊?为什么要用英文?,因为我,,没搞定编码问题?。

接着我来进行抽题:

PHP实现类似题库抽题效果
PHP实现类似题库抽题效果

这样就随机抽出了三道题目。

现在来说说我的思路,希望各位大佬不吝赐教。

首先要实现这个功能,首先我需要三个页面,一个是用户输入页面input.html,一个是后台处理页面select.php,还有一个是错误警告页面error.html(如果用户输入为空,或者输入的抽题数量超过了题库的数量那么就报错),然后是数据库,数据库分为两列,一列是question,用来存放题目,另一列是id,用于标识question

然后对用户的输入进行判断:

PHP实现类似题库抽题效果

input.html页面:

<html>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <form action="select.php" method="get">
    请输入要随机生成的题数:<input type="text" name="input" />
    <input type="submit" name="Submit" value="提交" />
  </form>
</html>

error.html页面:

<html>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <p>您的输入有误,请重新输入!</p>
</html>

select.php页面:

<?php
  header("Content-type:text/html;charset=utf8");
  $connect=new mysqli('localhost','wy','000000','test');
  if(!$connect){
    die("数据库连接失败!");
  }              //连接数据库
  $sql="select id from test";
  $result=$connect->query($sql);
  $array=array();
  $i=0;
  while($row=$result->fetch_row()){
    foreach($row as $val){
      $array[$i]=$val; 
      $i ++;
    }
  }             //将题目id存放进一个数组array
  $input=$_GET['input'];  //接受用户的输入
  if(empty($input) || $input>count($array)){ //判断用户的输入是否为空或输入大于题库数量
    header("Location:error.html");  //输入有误重定向到错误提示页面
  }else{
    shuffle($array);  //将存放题目id的数组进行随机排序
    $k=0;        //用于取出rand数组中question时的id
    for($j=0;$j<$input;$j++){
      $rand=array_slice($array,0,$input);   //从数组的第一个数开始,取出用户输入数量个id存放进一个数组
      $sql2="select * from test where id='{$rand[$k]}'"; //查找rand数组中每一个id对应的question
      $result2=$connect->query($sql2);  //存放mysql语句返回的结果集
      while($row2=$result2->fetch_assoc()){
        echo $row2['question'];   //返回question对应的内容
        echo '<br />';
      }
      $k++;
    }
    $result2->free();  //释放内存
  }
  $result->free();    //释放内存
  $connect->close();   //关闭连接
?>

总结

以上所述是小编给大家介绍的PHP实现类似题库抽题效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
搜索引擎技术核心揭密
Oct 09 PHP
php桌面中心(三) 修改数据库
Mar 11 PHP
PHP+MySQL 制作简单的留言本
Nov 02 PHP
PHP无敌近乎加密方式!
Jul 17 PHP
PHP字符串的递增和递减示例介绍
Feb 11 PHP
Destoon模板制作简明教程
Jun 20 PHP
php计算两个日期相差天数的方法
Mar 14 PHP
php 实现一个字符串加密解密的函数实例代码
Nov 01 PHP
浅谈Yii乐观锁的使用及原理
Jul 25 PHP
PHP实现登录注册之BootStrap表单功能
Sep 03 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
laravel5.6中的外键约束示例
Oct 23 PHP
php实现的rc4加密解密类定义与用法示例
Aug 16 #PHP
Laravel框架实现定时发布任务的方法
Aug 16 #PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 #PHP
Laravel中的chunk组块结果集处理与注意问题
Aug 15 #PHP
PHP curl批处理及多请求并发实现方法分析
Aug 15 #PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 #PHP
php使用curl获取header检测开启GZip压缩的方法
Aug 15 #PHP
You might like
php使用正则过滤js脚本代码实例
2014/05/10 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
2017/03/14 PHP
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
javascript定义函数的方法
2010/12/06 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
javascript基本算法汇总
2016/03/09 Javascript
js实现右键菜单功能
2016/11/28 Javascript
浅谈js中function的参数默认值
2017/02/20 Javascript
jquery实现下载图片功能
2019/07/18 jQuery
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
python ChainMap的使用和说明详解
2019/06/11 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
2020/04/24 Python
Pandas的Apply函数具体使用
2020/07/21 Python
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
什么是设计模式
2012/06/17 面试题
货代行业个人求职简历的自我评价
2013/10/22 职场文书
数学专业毕业生自荐信
2013/11/10 职场文书
高中生评语大全
2014/04/25 职场文书
车辆工程专业求职信
2014/06/14 职场文书
北京英语导游词
2015/02/12 职场文书
酒店总经理岗位职责
2015/04/01 职场文书
仙境之桥观后感
2015/06/16 职场文书
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技