Desenvolvimento - PHP
PHP e MySQL: sistema de paginação
Aprenderemos neste tutorial como criar um sistema de paginação utilizando PHP e MySQL com rápida implementação em qualquer sistema.
por Rafael CostaA principal característica desse sistema é a facilidade de implementação em sua página.
Você precisa apenas definir as variáveis de quantidade de registros por página e o número de botões que serão exibidos para a paginação. Por exemplo: Caso defina este número em 3, será exibido 3 links antes e 3 links depois da página atual.
Se você estiver na página 5, será exibido assim:
primeira página 2 3 4 5 6 7 8 última página
O número 5, que é a página atual, não terá link. Todos os outros terão links para as respectivas páginas.
Para visualizar o código em funcionamento, visite este link: http://www.rafaelcosta.com/Tutoriais/paginacao_html.php
Neste link, eu personalizei o css, mas a dinâmica da página é a mesma.
Abaixo segue o código todo comentado:
Abraços a todos!
Você precisa apenas definir as variáveis de quantidade de registros por página e o número de botões que serão exibidos para a paginação. Por exemplo: Caso defina este número em 3, será exibido 3 links antes e 3 links depois da página atual.
Se você estiver na página 5, será exibido assim:
primeira página 2 3 4 5 6 7 8 última página
O número 5, que é a página atual, não terá link. Todos os outros terão links para as respectivas páginas.
Para visualizar o código em funcionamento, visite este link: http://www.rafaelcosta.com/Tutoriais/paginacao_html.php
Neste link, eu personalizei o css, mas a dinâmica da página é a mesma.
Abaixo segue o código todo comentado:
<?php // Selecionar servidor $conectar = mysql_connect("servidor", "usuario", "senha") or die ("Erro ao logar no BD"); // Selecionar BD mysql_select_db("bancodedados", $conectar); // Pegar a página atual por GET $p = $_GET["p"]; // Verifica se a variável tá declarada, senão deixa na primeira página como padrão if(isset($p)) { $p = $p; } else { $p = 1; } // Defina aqui a quantidade máxima de registros por página. $qnt = 5; // O sistema calcula o início da seleção calculando: // (página atual * quantidade por página) - quantidade por página $inicio = ($p*$qnt) - $qnt; // Seleciona no banco de dados com o LIMIT indicado pelos números acima $sql_select = "SELECT * FROM tabela LIMIT $inicio, $qnt"; // Executa o Query $sql_query = mysql_query($sql_select); // Cria um while para pegar as informações do BD while($array = mysql_fetch_array($sql_query)) { // Variável para capturar o campo "nome" no banco de dados $nome = $array["nome"]; // Exibe o nome que está no BD e pula uma linha echo $nome." <br /> "; } // Depois que selecionou todos os nome, pula uma linha para exibir os links(próxima, última...) echo "<br />"; // Faz uma nova seleção no banco de dados, desta vez sem LIMIT, // para pegarmos o número total de registros $sql_select_all = "SELECT * FROM tabela"; // Executa o query da seleção acimas $sql_query_all = mysql_query($sql_select_all); // Gera uma variável com o número total de registros no banco de dados $total_registros = mysql_num_rows($sql_query_all); // Gera outra variável, desta vez com o número de páginas que será precisa. // O comando ceil() arredonda "para cima" o valor $pags = ceil($total_registros/$qnt); // Número máximos de botões de paginação $max_links = 3; // Exibe o primeiro link "primeira página", que não entra na contagem acima(3) echo "<a href="paginacao.php?p=1" target="_self">primeira pagina</a> "; // Cria um for() para exibir os 3 links antes da página atual for($i = $p-$max_links; $i <= $p-1; $i++) { // Se o número da página for menor ou igual a zero, não faz nada // (afinal, não existe página 0, -1, -2..) if($i <=0) { //faz nada // Se estiver tudo OK, cria o link para outra página } else { echo "<a href="paginacao.php?p=".$i."" target="_self">".$i."</a> "; } } // Exibe a página atual, sem link, apenas o número echo $p." "; // Cria outro for(), desta vez para exibir 3 links após a página atual for($i = $p+1; $i <= $p+$max_links; $i++) { // Verifica se a página atual é maior do que a última página. Se for, não faz nada. if($i > $pags) { //faz nada } // Se tiver tudo Ok gera os links. else { echo "<a href="paginacao.php?p=".$i."" target="_self">".$i."</a> "; } } // Exibe o link "última página" echo "<a href="paginacao.php?p=".$pags."" target="_self">ultima pagina</a> "; ?>Espero que tenham gostado.
Abraços a todos!