pagination分页入门


备注

本节概述了分页的内容以及开发人员可能希望使用它的原因。

它还应该提到分页中的任何大型主题,并链接到相关主题。由于分页文档是新的,您可能需要创建这些相关主题的初始版本。

安装或设置

有关设置或安装分页的详细说明。

分页解决方案

以下文档描述了MySQLi和PDO支持的分页解决方案。

转到https://github.com/rajdeeppaul/Pagination并将pagination.php 文件下载到项目目录中。假设您的目录结构如下所示:

project directory
       |
       |--pagination.php (pagination script)
       |--index.php (file where you want to use this pagination script)
 

假设您希望URL看起来像这样:

http://example.com/index.php          // user is on page 1
http://example.com/index.php?page=1   // user is on page 1
http://example.com/index.php?page=5   // user is on page 5
// etc ...
 

的index.php

  1. index.php 页面中包含pagination.php 文件,如下所示:

    require_once('pagination.php');
     
  2. 创建一个Pagination 类的实例,如下所示:

    $pg = new Pagination($databaseDriver, $hostname, $username, $password, $databaseName);
     

    构造函数方法采用以下参数,

    (1) $databaseDriver :数据库驱动程序,目前支持的驱动程序是MySQLi和PDO
    (2) $hostname :主机名
    (3) $username :用户$username
    (4) $password :密码
    (4) $databaseName :数据库名称

    例子):

    $pg = new Pagination('mysqli', 'localhost', 'root', 'pass', 'pagination_db');
    $pg = new Pagination('pdo', 'localhost', 'root', 'pass', 'pagination_db');
     
  3. 使用setPaginationParameters() 方法设置分页参数,如下所示:

    $pg->setPaginationParameters($rowsPerPage, $numOfPaginationLinks);
     

    setPaginationParameters() 方法采用以下参数,

    (1) $rowsPerPage :每页显示的表行数
    (2) $numOfPaginationLinks :每页显示的分页链接数

    例子):

    $pg->setPaginationParameters(10, 5);
     
  4. 调用getResult() 方法根据URL查询显示表行?page=X ,如下所示:

    $resultSet = $pg->getResult($queryString, $bindParameterArray, $globalGetArray, $keyFromURLQuery);
     

    getResult() 方法采用以下参数,

    (1) $queryStringSELECT 查询字符串
    (2) $bindParameterArray :包含绑定变量或值的数组
    (3) $globalGetArray :超全局数组$_GET
    (4) $keyFromURLQuery :来自URL查询的键,即page

    例子):

    $resultSet = $pg->getResult('SELECT * FROM pagination', NULL, $_GET, 'page');
    $resultSet = $pg->getResult('SELECT * FROM pagination WHERE column1 = ? AND column2 = ?', array($value1, $value2), $_GET, 'page');
     

    注意:请勿在查询中指定任何LIMITOFFSET 子句,脚本将负责这些。

    现在遍历结果集,即$resultSet 数组来访问/显示行详细信息,如下所示:

    foreach($resultSet as $row){
        /* access/display row details */
        /* $row['column1'], $row['column2'] etc. */
    }
     

    注意:如果要查看完整的数组结构,请执行var_dump($resultSet);

  5. 使用getPaginationLinks() 方法显示分页链接,如下所示:

    $pgLinks = $pg->getPaginationLinks();
     

    getPaginationLinks() 方法不接受任何参数,并返回以下格式的分页链接数组,

    array (size=3)
      'prev' => @boolean
      'links' => @array
      'next' => @boolean
     

    现在遍历$pgLinks 数组以显示paginagtion链接,如下所示:

    if(is_array($pgLinks) && count($pgLinks) && $pgLinks['prev']){
        /* previous pages are available */
        echo '« ';
    }
    if(is_array($pgLinks) && count($pgLinks) && count($pgLinks['links'])){
        /* show pagination links */
        foreach($pgLinks['links'] as $link){
            echo '<a href="example.php?page='.$link.'">'.$link.'</a> ';
        }
    }
    if(is_array($pgLinks) && count($pgLinks) && $pgLinks['next']){
        /* next pages are available */
        echo '&raquo;';
    }
     

    注意:如果要查看完整的数组结构,请执行var_dump($pgLinks);


脚注:您可以根据自己的选择设置结果行和分页链接的样式。