+6

Paginação de Resultados

criado por Fábio B Santana em 06/06/2004 11:26pm
Para podermos navegar pelas páginas, devemos criar uma variável que identifique em qual págiana o usário está. Vamos então definir a variável $pagina (identificador de páginas).
Todo resultado (para qualquer consulta) sempre levará o usuário para a primeira página gerada pela paginação, ou seja, o valor inicial do identificador de páginas será $pagina=1; se você usar um formulário para processar a consulta, não esqueça de redirecionar o usuário para a pagina "paginacao.php", por exemplo da seguinte forma:

<?php
header("Location: paginacao.php?pagina=1");
?>

O importante é lembrar que quando o usuário for encaminhado aos resultados de sua consulta pela primeira vez, deveremos ter $pagina=1. A partir deste ponto, o código torna-se autônomo e encaminhará o usuário adequadamente.

Vamos ao código:

<?php
// início da terceira etapa...
  
// sabemos que o resultado da consulta é um array multidimensional, onde cada linha 
// representa um registro...
// se o usuário está na página 2, devemos exiber as linhas numeradas de 19(inicial) à 
// 28(final)...
// lembre-se que as pagina são numeradas iniciando em 1, mas o array de resultados inicia 
// em 0(zero)...

$linha_inicial = ($pagina - 1) * $total_reg;
$linha_final = $linha_inicial + $total_reg - 1;
  
// escrevendo os registros...
// vamos usar um arcador para sabermos se estamos entre a linha final e a linha inicial...
$marcador = 0;
while ($array_result = mysql_fetch_array($result)) {
    // se o marcador está dentro do intervalo desejado, escrevemos o registro...
    if ($marcador >= $linha_inicial and $marcador <= $linha_final) {
        //aqui você personaliza sua saída...           
    }
    //incrementamos o marcador...
    $marcador = $marcador + 1; 
}

// fim da terceira etapa...
?>

Agora vamos criar os links para as páginas...

<?php
// início da quarta parte...
  
// se estivermos na primeira página, o link "anterior" não precisa linkar nada...
if ($pagina == 1) {
    echo "<font color=\"#999999\"><< anterior</font> |";
}
// do contrário, linka a página anterior...
else {
    echo "<< <a href=\"paginacao.php?pagina=".($pagina - 1)."\" targe=\"_self\">anterior</a> |";
}

// gerando os números com os respectivos links...
$i = 1;
while ($i <= $total_paginas) {
    // a página atual não precisa ser linkada...
    if ($i == $pagina) {
        echo " <u>$i</u> ";
    }
    // as demais páginas deve ser linkadas...
    else {
        echo " <a href=\"paginacao.php?pagina=".$i."\" target=\"_self\">".$i."</a> ";
    }
    $i = $i + 1; 
}

// se estivermos na última página, o link "próximo" não precisa linkar nada...                
if ($pagina == $total_paginas) {
    echo "| <font color=\"#999999\">próxima >></font>\n";
}
// do contrário, linka a próxima página...
else {
    echo "| <a href=\"paginacao.php?pagina=".($pagina + 1)."\" targe=\"_self\">próxima</a> >>\n";
}

// fim da quarta etapa...
?>

Bom proveito...

Comentários:

Mostrando 1 - 10 de 24 comentários
Diogo Ribeiro disse:
Ótimo! Simples e funcional, mas se eu quiser criar uma paginação igual a paginação do Google? Não precisa ter imagens e formatação CSS, e sim a definição de só mostrar 10 links numéricos por fez!
Exemplo: 1,2,3...10, ai se clicar em próxima mostrará 11,12,13,14...
Entendeu? Se puder ajudar nessa, desde a já agradeço!
Obrigado e parabéns pelo artigo!
29/03/2010 4:05pm (~10 anos atrás)

Muito bommmmmm!
30/11/2006 4:01pm (~14 anos atrás)

Gostei muito do tutorial e não encontrei absolutamente nenhuma falha. Mesmo ele sendo grande é muito didático aprendi com você!!!! Parabéns!
24/04/2006 12:21pm (~14 anos atrás)

Alex S Silv disse:
segue:
04/10/2005 8:46pm (~15 anos atrás)

Nend disse:
Estou com o mesmo problema do mascker, comigo o 1° resultado tb não é mostrado, faz tempo q o artigo foi publicado... mas isso tah me dando uma boa dor de cabeça, se alguém souber, ou poder ajudar... falem ai... pq isso tah me atrasando... e se for mudar de script de paginação, vai dar muito trabalho, pois jah integrei o que queria a paginação ai fica algo complicado. :D
12/02/2005 10:07am (~16 anos atrás)


$dados = mysql_fetch_array($res);
$id_termos = $dados["id_termos"];
$texto = $dados["texto"];
$texto=nl2br($texto);

13/01/2005 8:13am (~16 anos atrás)

<? include("conectar.php")?><p>Digite uma palavara relacionada com a pe&ccedil;a que voc&ecirc; procura.
(Eixo, Pino...)<br>
Se voc&ecirc; quiser a lista completa <a href="/itens/relatorio2.php" target="_blank">clique
aqui</a>.</p>
<form method="POST">
Palavra: <input type="text" name="palavra">
<input type="submit" value="Buscar">
</form>
<?
if(!empty($HTTP_POST_VARS['palavra'])) {
$palavra = str_replace(" ", "%", $HTTP_POST_VARS['palavra']); /* Altera os espaços adicionando no lugar o simbolo % */
$qr = "SELECT * FROM lista WHERE descricao LIKE '%".$palavra."%' ORDER BY id DESC";
$sql = mysql_query($qr); // Executa a query no Banco de Dados
$total = mysql_num_rows($sql); // Conta o total ded resultados encontrados
echo "Sua busca retornou '$total' resultados.<br>\n";
echo "<table width=670 border=1 cellpadding=1 cellspacing=1 >";
echo "<tr>";
echo "<th >ID:</th>";
echo "<th >Item:</th>";
echo "<th >Descrição:</th>";
echo "<th >Marca linha familia:</th>";
echo "<th >Estoque:</th>";
echo "<th >A vista:</th>";
echo "<th >A prazo:</th>";
echo "</tr>";
while ($linha=mysql_fetch_array($sql)) {
$id = $linha["id"];
$item = $linha["item"];
$descricao = $linha["descricao"];
$mlf = $linha["mlf"];
$estoque = $linha["estoque"];
$avista = $linha["avista"];
$aprazo = $linha["aprazo"];


echo "<tr>";
echo "<th >$id<br></th>";
echo "<th >$item<br></th>";
echo "<th >$descricao<br></th >";
echo "<th >$mlf<br></th>";
echo "<th >$estoque<br></th>";
echo "<th >$avista<br></th>";
echo "<th >$aprazo<br></th>";
echo "</tr>";
echo "<br>";

}

echo "</table>";
}
//}
?>
08/07/2004 2:09pm (~16 anos atrás)

Identifiquei como fazer, na terceira etapa do script coloquem isso:

//aqui você personaliza sua saída...
echo $array_result[0]."<br>";
05/07/2004 12:27pm (~16 anos atrás)

Segundo o comentário do nosso amigo Ferrugem, como é feita a exibição, pois só mostram os botões e os números das páginas. COMO EXIBIR OS REGISTROS NA PÁGINA?

05/07/2004 10:50am (~16 anos atrás)

Guedes disse:
Parabéns, acho muito importânte a programação em php independente do banco de dados, alguns podem não concordar comigo, mas quem trabalha ou já trabalhou com manutênções contínuas de alguma(s) empresa(s) sabe quanto é importante a programação voltada para qualquer banco. Minha sugestão é adaptar este script para classe.
21/06/2004 7:46am (~16 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)