回归后端分页本质,理清后端分页思路

    采用后端分页的方式不管用了什么插件或者框架,回归本质,底层还是sql。这里提供mysql 和 SQL Server 分页sql 实现。

分页需要的知道的几个参数:

    当前页

    一页多少行

    总记录数

    总页数

上面的4个参数可以先自己定义默认值,但是总记录数和总行数需要查询数据库之后计算

Php+mysql:

 

   $pageNow = 1;//当前页
    $pageSize = 5;//一页多少行
    $lineCount = 0;//总记录书
    $pageCount = 0;//总页数
    
    //从get请求中获取前端需要请求的当前页
    if(isset($_GET['pageNow'])){
        $pageNow = $_GET['pageNow'];
    }
    
    //统计总记录数
    $sql = "select count(*) as count from table_test";
    //执行查询
    $res=$conn->query($sql);
    while($row=$res->fetch_assoc()){
        $lineCount = $row['count'];
    }
    //向上取整,统计总页数
    $pageCount = ceil($lineCount/$pageSize);
    
    //动态生成sql
    $sql = "select * from table_test limit ".($pageNow-1) * $pageSize.", $pageSize";
  //下面的部分省略,执行查询即可

 

 

 

Php + SQL Server2008R2:

  如果不知道php怎么连接sql server 可以参考这篇博客

   $lineCount = 0;//总行数

    $pageSize = 15;//一页多少行

    $pageNow = 1;//当前页

    $pageCount = 0;//一共多少页页数 = 总行数 / 一行多少页并且向上取整

    if(isset($_GET['pageNow'])){

        $pageNow = $_GET['pageNow'];

    }

    //查询总行数

    $sql = "select count(*) as num from writeCard";

    $result = odbc_do($conn, $sql);

    if(odbc_fetch_row($result)){

        $lineCount = odbc_result($result, "num");

    }

    //算出总页数

    $pageCount = ceil($lineCount / $pageSize);

    $stratIndex = ($pageNow-1)*$pageSize + 1;

    $endIndex = $stratIndex + $pageSize ;

    $sql = "select * from (select *,ROW_NUMBER() over(order by convert(bigint,CardOutnerID) asc) as num from writeCard) as temp where temp.num >= ". stratIndex." and temp.num <". endIndex;

  //下面的部分省略,执行查询即可

 

 

 

 

posted @ 2019-11-29 11:18  makalo  阅读(651)  评论(0)    收藏  举报