• 功能三——读取试题列表与分页显示


      PHP分页机制的作用主要是用于处理,当网页要显示多条(大于20条)SQL语句查询的结果时,在一页显示不仅会影响查看,而且对数据库的读取也比较耗费计算机资源。因此,当显示SQL语句的查询结果时,往往会使用分页的机制来缓解内存用于数据库的读取的资源占用、以及给用户更加清晰的浏览体验。

    •  在使用select查询时,使用limit子句可用于强制selet语句返回指定的记录数。

          语法格式:select * from tableName limit  num1,num2;

                  num1:从第几个开始查找;      

             num2:要查找的数目

          Select * from table limit 0,10

              上面是一句简单的sql查询语句,它的作用是从一个名叫table的表里提取前10条数据

     

    •  使用到的变量:

        $currentPage;    //记录当前所在页

        $pageNum;        //总页数

        $pageSize;   //每页显示的条数

    •    ceil() 函数向上舍入为最接近的整数

         ceil(5.2)=>6;ceil(-2.4)=>-2

    一、定义参数,并通过GET/POST方式传入默认值

    $currentPage=isset($_GET['currentPage'])?intval($_GET['currentPage']):1;     
    //检查是否传入当前页的值。假如不存在currentPage,默认当前页数为1 $pageSize=isset($_GET['pageSize'])?intval($_GET['pageSize']):5;
    //检查是否传入每页显示的条数值。假如不存在pageSize,默认每页显示条数为5条 //假如传入的页数参数apge 大于总页数 pagenum,则显示错误信息 If($currentPage>$pageNum || $currentPage== 0){ Echo "Error : Can Not Found The page ."; Exit();
    }

     二、建立函数,对想应分页操作进行封装

      1、建立一个函数getList():传入当前页码和每页显示的条数,并将这两条数据作为从数据库查询当前页显示数据的条件。然后将查询到的用于当前页显示的数据储存到对象数组$datalist[]中(每条数据封装成对象对应着数组的一个值)。$datalist[0]→第一个数据对象、$datalist[1]→第二个数据对象......

    function getList($currentPage, $pageSize)
    {
        $datalist = array();
        $conn = mysqli_connect("localhost", "root","admin");
       
        $result = "select * from tableName limit ".(($currentPage- 1) * $pageSize)."," . $pageSize; 
    // limit为约束显示多少条信息,后面有两个参数,第一个为从第几个开始,第二个为长度

    $result = mysqli_query($conn, $result);
       while ($obj = mysqli_fetch_object($result)) {
        
    $datalist[] = $obj;
      }

       mysqli_close($coon,"jereh");
      
    return$datalist;
    }

        2、建立第二个函数getPageNum():传入每页要显示的条数,返回总页数

    function getPageNnum($pageSize){    
         $conn = mysqli_connect("localhost", "root","admin");
    
         $total=mysql_num_rows(mysql_query($conn,"select * from table"));      //查询数据的总条数total
         $pageNum=ceil($total/$pageSize);        //获得总页数 pageNum
    
         return $pageNum;
    }    

     

      $pageNum = getPageNum($pageSize);     //假设总共22条数据,默认$pageSize=5。那么$pageNum=5

      $datalist=array();

      $datalist=getList($currentPage, $pageSize);

      3、在页面进行显示

    <table border="1" style="text-align: center" cellpadding="0">
        <tr>
            <td>编号</td>
            <td>标题</td>
            <td>来源</td>
            <td>说明</td>
            <td>发布日期</td>
        </tr>
        <?php
        foreach($datalist as $key=>$values){
            echo "<tr>";
            echo "<td>{$datalist ->id}</td>";
            echo "<td>{$datalist ->title}</td>";
            echo "<td>{$datalist ->src}</td>";
            echo "<td>{$datalist ->remark}</td>";
            echo "<td>{$datalist ->date}</td>";
            echo "</tr>";
        }
        ?>
    </table>

      4、实现上一页、下一页效果

      要实现页面跳转的效果,我们需要用到了a标签的href属性,地址写“?pageNum = ...”这个pageNum是我们自己定义的,由于是get来传递的,在上一步里面我们已经用$_GET接受了参数,所以我们只需要进行get的参数传递就可以了;

      首页:“pageNum=1”;

      上一页:"pageNum=<?php echo $pageNum==1?1:$pageNum-1?>"

      下一页:"pageNum=<?php echo $pageNum==$endPage ?$endPage :$pageNum+1?>"

      尾页:“pageNum=<?php echo $pageNum =$endPage?>”;

      特别注意的是,”pageNum=”的时候后面千万千万不要空格,代码如下

     <a href="?pageNum=1">首页</a>
       <a href="?pageNum=<?php echo $pageNum==1?1:($pageNum-1)?>">上一页</a>
       <a href="?pageNum=<?php echo $pageNum==$endPage?$endPage:($pageNum+1)?>">下一页</a>
      <a href="?pageNum=<?php echo $endPage?>">尾页</a>

     

     

      总的代码如下:

     

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>分页</title>
       <?php
     
    //分页的函数
    function getList($currentPage, $pageSize)
    {
        $datalist = array();
        $conn = mysqli_connect("localhost", "root","admin");
       
        $result = "select * from tableName limit ".(($currentPage- 1) * $pageSize)."," . $pageSize; 
    // limit为约束显示多少条信息,后面有两个参数,第一个为从第几个开始,第二个为长度 $result = mysqli_query($conn, $result);    while ($obj = mysqli_fetch_object($result)) {      $datalist[] = $obj;   }    mysqli_close($coon,"jereh");    return $datalist; } //显示总页数的函数 function getPageNnum($pageSize){ $conn = mysqli_connect("localhost", "root","admin"); $total=mysql_num_rows(mysql_query($conn,"select * from table")); //查询数据的总条数total $pageNum=ceil($total/$pageSize);   //获得总页数 pageNum return $pageNum; } $currentPage=isset($_GET['currentPage'])?intval($_GET['currentPage']):1;
    //检查是否传入当前页的值。假如不存在currentPage,默认当前页数为1 $pageSize=isset($_GET['pageSize'])?intval($_GET['pageSize']):5;
    //检查是否传入每页显示的条数值。假如不存在pageSize,默认每页显示条数为5条 //假如传入的页数参数apge 大于总页数 pagenum,则显示错误信息 If($currentPage>$pageNum || $currentPage== 0){ Echo "Error : Can Not Found The page ."; Exit(); } $pageNum = getPageNum($pageSize); //假设总共22条数据,默认$pageSize=5。那么$pageNum=5   $datalist=array();   $datalist=getList($currentPage, $pageSize); ?> </head> <body> <table border="1" style="text-align: center" cellpadding="0"> <tr> <td>编号</td> <td>新闻标题</td> <td>来源</td> <td>点击率</td> <td>发布日期</td> </tr> <?php foreach($datalist as $key=>$values){ echo "<tr>"; echo "<td>{$values->id}</td>"; echo "<td>{$values->title}</td>"; echo "<td>{$values->src}</td>"; echo "<td>{$values->indexs}</td>"; echo "<td>{$values->times}</td>"; echo "</tr>"; } ?> </table> <div> <a href="?currentPage=1">首页</a> <a href="?currentPage=<?php echo $currentPage==1?1:($currentPage-1)?>">上一页</a> <a href="?currentPage=<?php echo $currentPage==$pageNum?$pageNum:($currentPage+1)?>">下一页</a> <a href="?currentPage=<?php echo $pageNum?>">尾页</a> </div> </body> </html>

     

     

     

     

     

  • 相关阅读:
    Vue入门教程 第一篇 (概念及初始化)
    安装配置MongoDB
    Windows搭建SVN服务器
    MySql + Workbench使用教程
    Node.js入门教程 第六篇 (连接使用MySql)
    Node.js入门教程 第五篇 (Express框架)
    Node.js入门教程 第四篇 (流及文件操作)
    Node.js入门教程 第三篇 (模块、路由)
    Node.js入门教程 第二篇 (HelloWorld及事件分发)
    Node.js入门教程 第一篇 (概念原理及环境配置)
  • 原文地址:https://www.cnblogs.com/jytblog/p/7341291.html
Copyright © 2020-2023  润新知