Paginação de Resultados
Faremos toda a paginação com apenas um arquivo, denominado paginacao.php. Há algumas considerações prévias que devem ser definidas antes de implementar a paginação para o resultado de uma query:
1 - definir quantos registros por página você pretende apresentar;
2 - verificar o total de registros retornados pela consulta;
3 - calcular o total de páginas necessárias para expor os registros;
Vamos ao código:
Agora imagine que você (ou o usuário) defina uma paginação contendo 10 registros por página. Devemos tratar 3 situações:
1 - o resultado contém 10 ou menos registros e isto requer uma única página.
2 - o resultado contém mais de 10 registros e o número é multiplo de 10 (vamos supor 30). Isto requer 3 páginas.
3 - o resultado contém mais de 10 registros mas o número não é multiplo de 10 (vamos supor 33). Isto requer 3 páginas mais uma adicional para apresentar os 3 últimos registros .
Vamos ao código:
Na próxima etapa montaremos a paginação dos resultados para a consulta.
1 - definir quantos registros por página você pretende apresentar;
2 - verificar o total de registros retornados pela consulta;
3 - calcular o total de páginas necessárias para expor os registros;
Vamos ao código:
<?php // primeira parte... // consulta no banco de dados... $host = "localhost"; $user = "user"; $pass = "pass"; $db_nome = "database"; $link = mysql_connect ($host, $user, $pass); $query = "SELECT * FROM tabela"; $result = mysql_db_query ($db_nome, $query, $link) or die ("Conexão falhou!"); // total de registros retornados pela consulta... $num = mysql_num_rows($result); // total de registros por página... // você pode fixar ou deixar que o usuário escolha este valor... $total_reg = 10; // finaliza a consulta... mysql_close($link); // fim da primeira parte... ?>
Agora imagine que você (ou o usuário) defina uma paginação contendo 10 registros por página. Devemos tratar 3 situações:
1 - o resultado contém 10 ou menos registros e isto requer uma única página.
2 - o resultado contém mais de 10 registros e o número é multiplo de 10 (vamos supor 30). Isto requer 3 páginas.
3 - o resultado contém mais de 10 registros mas o número não é multiplo de 10 (vamos supor 33). Isto requer 3 páginas mais uma adicional para apresentar os 3 últimos registros .
Vamos ao código:
<?php // início da segunda parte... // 10 registros ou menos... if ($num <= $total_reg) { $total_paginas = 1; } // mais de 10 registros com valor múltiplo de 10... if ($num%$total_reg == 0) { $total_paginas = $num / $total_reg; } // mais de 10 registros porém o valor não é múltiplo de 10... else { // como a divisão não é exata, teremos que subtrair a parte que não é inteira e // acrescentar 1 página. $total_paginas = ($num/$total_reg) - (($num%$total_reg)/$total_reg) + 1; } // fim da segunda parte... ?>
Na próxima etapa montaremos a paginação dos resultados para a consulta.
Páginas:
1
2
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
(~18 anos atrás)
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
(~20 anos atrás)
$dados = mysql_fetch_array($res);
$id_termos = $dados["id_termos"];
$texto = $dados["texto"];
$texto=nl2br($texto);
13/01/2005 8:13am
(~20 anos atrás)
<? include("conectar.php")?><p>Digite uma palavara relacionada com a peça que você procura.
(Eixo, Pino...)<br>
Se você 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>";
}
//}
?>
(Eixo, Pino...)<br>
Se você 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
(~20 anos atrás)
Identifiquei como fazer, na terceira etapa do script coloquem isso:
//aqui você personaliza sua saída...
echo $array_result[0]."<br>";
//aqui você personaliza sua saída...
echo $array_result[0]."<br>";
05/07/2004 12:27pm
(~20 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
(~20 anos atrás)
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
(~20 anos atrás)
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!