Entendendo como funciona uma paginação

Todos os nossos cursos em promoção

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

Publicado em

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
                    }

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

Gunnar Correa
Gunnar Correa

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

Todos os nossos cursos em promoção
Todos os nossos cursos em promoção

Webstories

Todos os nossos cursos em promoção


Deixe um comentário
Aguarde...
Todos os nossos cursos em promoção