PHP: Script para paginação
O script é baseado neste link, escrito por “wolfphw”.
Porém, este script apresenta alguns problemas relatados neste outro link.
veja o que acontece:
<< Anterior 1 2 3 4 Próxima >>
— quando clica no número 1, o valor de $pg é igual a 0, em 2 $pg = 1 e assim sucessivamente.
Qual a proposta deste post?
Compartilhar um código funcional, resolvendo o problema da numeração e com mais alguns ajustes.
A idéia é a mesma, vamos ter 2 arquivos, pagina.php e paginacao.php.
pagina.php
<?php $numreg = 10; // Quantos registros por página vai ser mostrado $pg = isset($_GET["pg"]) ? $_GET["pg"] : 1; $inicial = ($pg * $numreg) - $numreg; // Serve para contar quantos registros você tem na sua tabela para fazer a paginação $totalProdutos = mysql_query("SELECT * FROM produtos"); $countTotal = count($totalProdutos); // Faz o Select pegando o registro inicial até a quantidade de registros para página $sql = mysql_query("SELECT * FROM produtos LIMIT $inicial, $numreg"); while ($rows = mysql_fetch_array($sql)) { /* aqui entra o código para exibir os produtos */ } echo "<br><br>"; // quebra de linha entre a paginação e o conteúdo // aqui uma pequena mudança no código do wolfphw // a paginação só exibida quando o total de produtos for maior // que a quantidade de registros por página if ( $countTotal > $numreg ){ include("paginacao.php"); // chamada do arquivo. ex: << Anterior 1 2 3 4 5 Próxima >> } ?> |
paginacao.php
<?php $quant_pg = ceil($countTotal/$numreg); $quant_pg++; //$url_ant = "http://www.site.com.br/produtos/"; $url_ant = $_SERVER['HTTP_REFERER']; // anterior if ( $pg > 1) { echo "<a href=".$url_ant.($pg-1) ."><span class='style2'>Anterior</span></a> "; } else { echo "<span class='style2'>Anterior</span> "; } // Faz controle das páginas que irá mostrar na paginação if(($pg - 4) < 1) { $anterior = 1; } else { $anterior = $pg - 4; } if(($pg + 6) > $quant_pg) { $proximo = $quant_pg; } else { $proximo = $pg + 6; } // Crio os números das páginas entre Anterior e Próximo for($i_pg = $anterior; $i_pg < $proximo; $i_pg++) { if ($pg == ($i_pg)) { echo "<span class='style3'>$i_pg</span>"; } else { $i_pg2 = $i_pg; echo " <a href={$url_ant}{$i_pg2}><span class='style2'>$i_pg</span></a> "; } } // proximo if (( $pg + 1 ) < $quant_pg) { echo "<a href=".$url_ant.($pg+1)."><span class='style2'> Próxima</span></a>"; } else { echo "<span class='style2'> Próxima</span>"; } ?> |
Nossa, este site é bruto demais ! Muita coisa básica mas extremamente necessária para o desenvolvimento, ainda mais de pessoas que assim como eu não sacam muito bem de PHP, é uma mão na roda, parabéns pelo trabalho, descobri o site ontem por outro site e ja ta no meu favoritos ! Acessarei sempre pra conferir. Dica: Algum artigo sobre criptografia de senha, como inserir criptografada no banco e como utilizar, tenho tido dificuldade em encontrar uma boa explicação hehe. Abraço
Olá Fábio,
obrigado pelo comentário. O linhadecomando.com é simples, prático e direto ao ponto.
Quanto a sua solicitação, vamos pensar a respeito e em breve postaremos algo.
Abraços e continue conosco.
Parabens muito objetivo facil entedimento
Olá, o site é bem explicado.. mais encontro uma situação diferente.
Eu criei um site aonde eu quero fazer a paginação só na parte de orçamento.
Aonde eu primeiro quero só os dados das pessoas, como email, nome e telefone.
passará a página e começarei as perguntas, quero criar no máximo 5 páginas, por mais que eu tenha salvado a página em php, meu form está em html. Dentro da form criei o ACTION” CADASTRAR.PHP, aonde irei jogar a paginação, já tentei de tudo que é forma e não consigo.
Olá Victor Felipe.
Para o seu caso, a melhor forma de fazer o que você quer, é usar Tabs.
ex: https://www.safaribooksonline.com/library/view/bootstrap-for-aspnet/9781783987283/ch04s04.html