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
AE Alexandre, legal o paginador em PHP/Mysql!
ResponderExcluirTo seguindo o seu blog, segue o meu também valeu!
http://thiago-programmer.blogspot.com/
Abração