sábado, 20 de março de 2010

Paginação PHP/Mysql - Exemplo

Este post sobre a implementação do recurso de paginação em php, proposto por um ilustre colega de faculdade que estava necessitando disto em PHP/Mysql.

Quando, numa página web, precisamos exibir muitos registros resultantes de uma query, para melhor perfomance e estética se faz necessária a utilização de paginação. É uma prática comum e amplamente utilizada.

Pra começar, criemos passo a passo o nosso arquivo PHP.


<?php

include "include/php/conecta.php"; // Referência ao arquivo que abre conexão com o Mysql
// Banco utilizado no exemplo

//Variável que armazena a quantidade máxima de registros que desejamos exibir por
// página(índice)
$TOTAL_REGISTROS_PAGINA = 10;

//Verifica-se se o usuário está acessando o primeiro índice(primeiro resultado da query)
$pagina_indice = $_GET["pagina_indice"]; //Verifica se possui a Querystring "pagina_indice"

if (!$pagina_indice) { // Se a ocorrência da querystring for falsa
$inicio = 0;
$pagina_indice=1; // Primeira paginação(índice)
}
else { //caso não seja a "primeira" página
$inicio = ($pagina_indice - 1) * $TOTAL_REGISTROS_PAGINA;
}


// O primeiro passo é verificar a quantidade de registros retornados pela query desejada
$sql = "select * from cliente ";
$record_set = mysql_query($sql,$conn);
$total_registros_retornados = mysql_num_rows($record_set);
//Próximo passo é fazer o cálculo de quantas páginas será necessário gerar.
$quantidade_paginas = ceil($total_registros_retornados / $TOTAL_REGISTROS_PAGINA);




//Para mostrarmos o resultado das variáveis que setamos lá em cima, vamos fazer isso:

echo "<b>Número de registros retornados na busca :</b> " . $quantidade_paginas . "<br>";

echo "<b>Total de registros por página: </b>" . $TOTAL_REGISTROS_PAGINA . " registros <br> ";
echo "<b>Estou mostrando a página " . $pagina_indice . " de " . $quantidade_paginas. "

<br></b>";



//Próximo passo é buscar os dados no banco efetivamente
$sql ="select * from cliente limit " . $inicio . ",". $TOTAL_REGISTROS_PAGINA;
$record_set = mysql_query($sql);
while ($linha = mysql_fetch_object($record_set)){
echo $linha->nome . "<br>";
}

//índices de paginação
if ($quantidade_paginas > 1){
for ($i=1;$i<=$quantidade_paginas;$i++)

{

if ($pagina_indice == $i) //tira o link da página atual

echo $pagina_indice . " ";

else // se não for a página atual insere o link

echo " <a href='paginacao.php?pagina_indice=" . $i . "' > " . $i . " </a> ";

}

}


include "include/php/desconecta.php"; // referência ao arquivo que fecha conexão com bd


?>


Neste exemplo foi utilizada a busca numa tabela chamada cliente e se mostrou uma relação(dez por dez) de clientes, mostrando apenas seus nomes.

Espero ter ajudado quem precisava disto. Qualquer problema com o script desenvolvido, sugestão, opinião ou consideração a fazer, por favor, postem comentários que respondo o mais rápido possível, pois esta é uma das propostas do blog.

Um grande abraço a todos




1 comentários:

  1. AE Alexandre, legal o paginador em PHP/Mysql!

    To seguindo o seu blog, segue o meu também valeu!

    http://thiago-programmer.blogspot.com/

    Abração

    ResponderExcluir