PHP实现类似题库抽题效果

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

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

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

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

查看所有标签

猜你喜欢:

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

The Little Schemer - 4th Edition

The Little Schemer - 4th Edition

Daniel P. Friedman、Matthias Felleisen / The MIT Press / 1995-12-21 / USD 40.00

This delightful book leads you through the basic elements of programming in Scheme (a Lisp dialect) via a series of dialogues with well-chosen questions and exercises. Besides teaching Scheme, The Lit......一起来看看 《The Little Schemer - 4th Edition》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具