Introdução à paginação

Instalação ou configuração

Instruções detalhadas sobre como configurar ou instalar a paginação.

Solução de paginação

A documentação a seguir descreve a solução de paginação compatível com MySQLi e PDO.

Vá para https://github.com/rajdeeppaul/Pagination e baixe o arquivo pagination.php no diretório do seu projeto. Digamos que sua estrutura de diretórios seja assim:

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

E suponha que você queira que o URL fique assim:

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. Inclua o arquivo pagination.php na página index.php, assim:

     require_once('pagination.php');
    
  2. Crie uma instância da classe Pagination, assim:

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

    The constructor method takes the following parameters,

    (1)$databaseDriver: Database driver, currently supported drivers are MySQLi and PDO
    (2)$hostname: Hostname
    (3)$username: Username
    (4)$password: Password
    (4)$databaseName: Database name

    Example(s):

     $pg = new Pagination('mysqli', 'localhost', 'root', 'pass', 'pagination_db');
     $pg = new Pagination('pdo', 'localhost', 'root', 'pass', 'pagination_db');
    
  3. Defina os parâmetros de paginação usando o método setPaginationParameters(), assim:

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

    The setPaginationParameters() method takes the following parameters,

    (1)$rowsPerPage: Number of table rows to display per page
    (2)$numOfPaginationLinks: Number of pagination links to display per page

    Example(s):

     $pg->setPaginationParameters(10, 5);
    
  4. Chame o método getResult() para exibir as linhas da tabela com base na consulta de URL ?page=X, assim:

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

    The getResult() method takes the following parameters,

    (1)$queryString: SELECT query string
    (2)$bindParameterArray: Array containing bind variables or values
    (3)$globalGetArray: Superglobal array $_GET
    (4)$keyFromURLQuery: Key from the URL query i.e. page

    Example(s):

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

    Note: Don’t specify any LIMIT or OFFSET clause in the query, the script will take care of these.

    Now loop through the result set i.e. $resultSet array to access/display row details, like this:

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

    Note: If you want to see the complete array structure, do var_dump($resultSet);.

  5. Exiba links de paginação usando o método getPaginationLinks(), assim:

     $pgLinks = $pg->getPaginationLinks();
    

    The getPaginationLinks() method doesn’t take any parameter and returns an array of pagination links in the following format,

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

    Now loop through the $pgLinks array to display paginagtion links, like this:

     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;';
     }
    

    Note: If you want to see the complete array structure, do var_dump($pgLinks);.


Nota(s) de rodapé: Você pode estilizar as linhas de resultados e os links de paginação conforme sua escolha.