PHP实现类似题库抽题效果

栏目: PHP · 发布时间: 6年前

内容简介:现在来说说我的思路,希望各位大佬不吝赐教。首先要实现这个功能,

PHP菜鸟

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

希望各位大佬轻喷。

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

PHP实现类似题库抽题效果

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

接着我来进行抽题:

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();      //关闭连接
?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序是怎样跑起来的

程序是怎样跑起来的

[日] 矢泽久雄 / 李逢俊 / 人民邮电出版社 / 2015-4 / 39.00元

本书从计算机的内部结构开始讲起,以图配文的形式详细讲解了二进制、内存、数据压缩、源文件和可执行文件、操作系统和应用程序的关系、汇编语言、硬件控制方法等内容,目的是让读者了解从用户双击程序图标到程序开始运行之间到底发生了什么。同时专设了“如果是你,你会怎样介绍?”专栏,以小学生、老奶奶为对象讲解程序的运行原理,颇为有趣。本书图文并茂,通俗易懂,非常适合计算机爱好者及相关从业人员阅读。一起来看看 《程序是怎样跑起来的》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具