Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leandro Vieira Pinho

[Resolvido] Paginacão com DB detalhada

Recommended Posts

Olá pessoal, vou postar uma paginação com banco de dados bem detalhada para todos compreenderem. Para desenvolvê-la eu tive como base a lógica utilizada nos behaviors do Dreamweaver.

 

Configurações gerais

 

$pg = $_SERVER["PHP_SELF"]; // Pega a URL da página em questão sem a query (se tiver).$totalExibir = 10; // O máximo de registros a serem exibidos por vez.$pr = 0; // Página inicial da exibição dos registrosif (isset($_GET['pr'])) {  // Se existir a página na URL.	$pr = $_GET['pr']; // altera o valor da variável $pr para o valor contido na URL.}$inicioExibir = $pr * $totalExibir; // O início da exibição dos registos [ 0 * 10 = 0 ]
pr significa: página de resultado.

 

$rsAgendaTotal = $mySQL->runQuery("SELECT count(*) AS total FROM agenda"); // Verifica o total de registros disponíveis$rsAgenda = $mySQL->runQuery("SELECT * FROM agenda LIMIT $inicioExibir, $totalExibir"); // Seleciona os registros de acordo com a página. Ex. LIMIT 40,10 irá exibir 10 registros sendo que eles iniciarão apartir da linha 40.$row_rsAgenda = mysql_fetch_assoc($rsAgenda); // Buscando os resultados do recordset
$totalRow = mysql_result($rsOrgTotal,0,'total'); // Pega o total de registros consultado através da variável $rsAgendaTotal.}$totalPgs = ceil($totalRow/$totalExibir)-1; // Total de páginas necessárias para exibir todos os registros.
Observações importantes:

 

* $mySQL->runQuery = significa que estou utilizando uma classe para realizar as operações do MySQL, não vou disponibilizá-la para não extender. Você pode utilizar o mysql_query.

* Vamos compreender a seguinte variável $totalPgs. $totalPgs = ceil(400/10)-1 = 39. Bom, a função ceil serve para arrendondar frações para cima. O -1 evita a exibição de uma última página em branco, ou seja, se estivermos 400/10 = 40 teríamos uma instrução SQL assim: ... LIMIT 400,10. Ou seja, iniciaremos a exibição dos dados apartir da linha 400, mas 400 é o máximo de registros, então teríamos uma página em branco. Não se esqueça que: $inicioExibir = $pr [40] * $totalExibir [10 ];

Tendo definido essas configurações, vamos criar os links de navegação: Primeira, Anterior, Próxima e Última.

 

<ul>

 

<?php if($pr > 0) { // Exibe o link: Primeira somente se a variável $pr for maior que 0. ?><li><a xhref="<?php echo $pg; ?>">Primeira</a></li><?php } ?>
<?php if($pr > 0) { // Exibe o link: Anterior somente se a variável $pr for maior que 0. ?><li><a xhref="<?php echo $pg . '?pr=' . max(0, $pr - 1); ?>">Anterior</a></li><?php } ?>
<?php if($pr < $totalPgs) { // Exibe o link: Próxima somente se a variável $pr for maior que o total de páginas ($totalPgs). ?><li><a xhref="<?php echo $pg . '?pr=' . min($totalPgs, $pr + 1); ?>">Próxima</a></li><?php } ?>
<?php if($pr < $totalPgs) { // Exibe o link: Próxima somente se a variável $pr for maior que o total de páginas ($totalPgs). ?><li><a xhref="<?php echo $pg . '?pr=' . $totalPgs; ?>">Última</a></li><?php } ?>
</ul>

 

* min - utilizada para localizar o menor número.

 

* max - utilizada para localizar o maior número.

 

Outro exemplo de paginação com banco de dados está aqui: http://forum.imasters.com.br/index.php?showtopic=125127 postada pelo Fabyo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.