Entendendo como funciona uma paginação

Gunnar CorreaGunnar Correa25/03/2017 às 01:42:07 - 12.423 acessos

Entenda e crie paginação para seu site, diminuindo assim o número de requisições no servidor.


Ter um recurso que limite a quantidade de conteúdos disponíveis por página, é quase que uma obrigação nos dias de hoje, pois não devemos carregar uma gama absurda de conteúdo em uma única página, sendo que nosso usuário não vai consumir todo conteúdo.

Um mecanismo de paginação possui vários benefícios, tanto para o desenvolvedor quanto para o cliente, podemos ver alguns abaixo.

- Carregamento mais rápido da página;

- Consulta otimizada no SQL;

- Baixo consumo de banda de internet (caso o acesso for via dispositivo móvel);

- Layout mais limpo e organizado;

- Entre outros.

Neste artigo será implementando o mecanismo de paginação em PHP, mas a lógica é exatamente a mesma para outras linguagens, como o ASP.NET e Java, por exemplo. Basicamente precisamos fazer alguns cálculos de onde se inicia e termina de acordo com a página atual do cliente. Para se obter a quantidade de páginas, arredondamos para cima a divisão da quantidade de registros contidos, pela quantidade de itens a ser exibido por página, assim podemos saber quantos botões vamos ter que implementar na página. O fim é a multiplicação da página atual pela quantidade de registros por páginas, e o início é a quantidade final subtraída pela quantidade por páginas.

O algoritmo abaixo foi escrito em PHP e está totalmente comentado, leia atentamente cada instrução da linha para que possa entender.

Código 01:

//O vetor a baixo exemplifica as informações contidas no banco de dados.
$vetProdutos = array("Mouse", "Teclado", "Monitor", "CPU", "Caixa de som", "Fone de ouvido", "Mouse pad", "Cabo USB", "Pen Drive", "HD externo", "Estabilizador", 
 
"Filtro de linha", "Roteador", "Cabo de rede", "Carregador", "Luminária");
 
$totalPagina = 5; //Variável que armazena a quantidade de produtos por página.
 
//Verifica se exite alguma query string com o valor da página, se não houver, define o valor 1.
$pagina = (filter_input(INPUT_GET, "pagina", FILTER_SANITIZE_NUMBER_INT) ? filter_input(INPUT_GET, "pagina", FILTER_SANITIZE_NUMBER_INT) : 1);
 
/*
    ceil() - Arredonda um valor para cima, por exemplo, 5.5 arredonda para 6, pois assim vai exibir cinco na primeira página e um na próxima.$_COOKIE
    count() - Conta a quantidade de valores do vetor
    15 / 5 = 3 Paginas
    16 / 5 = 3,2 | arredondamos para cima e temos 4 páginas.
*/
$quantidadePaginas = ceil(count($vetProdutos) / $totalPagina);
 
$fim = ($pagina * $totalPagina); //Multiplicamos a página atual pela quantidade de itens por página: P=4 I= 5 | 4 * 5 = 20;
$inicio = ($fim - $totalPagina); //Subtraimos o total de páginas pela quantidade final a ser exibido: FIM = 20 Tot. Pag. = 5 | 20 - 5 = 15
?>
 
            <title>Paginação com PHP</title>
            <meta charset="utf-8">
         
         
            <div id="dvConteudo">
                <h1>Produtos</h1>
                <br>
                    <?php
                    for($j = $inicio; $inicio < $fim; $inicio++){
                            if(!empty($vetProdutos[$inicio])){//Verificamos se as demais posições possuem algum valor
                                 echo "<span style='color: red;'>- {$vetProdutos[$inicio]}<br>";
                            }
                        }
                    ?>
                    <br>
                <?php
                    //Montamos a quantidade de botões
                    for($i = 0; $i < $quantidadePaginas; $i++){
                    ?>
                        <a href="?pagina=<?=($i + 1);?>" style="color: #111; text-decoration: none; background-color: #CCC; padding: 5px; border:1px solid #eee; font-
 
weight: bold;"><?=($i + 1);?></a>
                    <?php
                    }
Na figura 1, podemos ver o resultado da execução do algoritmo carregando a primeira e última página.

Consulta da primeira e última página, sistema de paginação com PHP.

Figura 1: Consulta da primeira e última página.

Para que você possa entender melhor, caso tenha restado alguma dúvida, assista a aula exibida abaixo.

Espero que tenham entendido e não tenha restado nenhuma dúvida, mas caso houver, deixe a sua dúvida nos comentários.

Até a próxima!


Referências

PHP ceil() - http://php.net/manual/pt_BR/function.ceil.php

PHP count() - http://php.net/manual/pt_BR/function.count.php

C# Math.Ceiling - https://msdn.microsoft.com/pt-br/library/zx4t0t48(v=vs.110).aspx


Paginação com PHP Paginação com ASP.NET Paginação com C# Criando paginação Sistema de paginação Como funciona uma paginação Limitando conteúdo por página Limite de exibição por página Limite

Compartilhe


Gunnar Correa

Gunnar Correa

Autodidata, Graduado em Desenvolvimento Web (FIPP), Especialista em Tecnologias na Educação (Unoeste) e Pós-graduando em Segurança da Informação (Universidade Cruzeiro do Sul). Começou seus estudos na área de programação quando era criança, e atualmente está estudando desenvolvimento de jogos. É CEO do portal SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.



Site atualizado

Olá, nosso site recebeu uma nova atualização e por conta disso, alguns artigos ainda estão sendo atualizados. Dependendo do conteúdo que você procura, poderá encontrar imagens e trechos de códigos mal formatados.

Estamos trabalhando para normalizar todos os conteúdos, muito em breve, esse problema não mais existirá.


Comentários