sexta-feira, 23 de março de 2012

Paginação de Resultados PHP


Nesta postagem irei mostrar como criar um sistema de paginação de resultados em PHP.

Paginação .php

//Aqui criamos um estilo para dar uma boa aparência para os links.

<style type="text/css">
<!--.pgoff {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #FF0000; text-decoration: none}
a.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #003366; text-decoration: none}a:hover.pg {font-family: Verdana, Arial, Helvetica; font-size: 11px; color: #0066cc; text-decoration:underline}
-->
</style>
<?php
        $quant_pg = ceil($quantreg/$numreg);
        $quant_pg++;

        // Verifica se esta na primeira página, se nao estiver ele libera o link para anterior
        if ( $pg > 0) {
                echo "<a href=".$PHP_SELF."?pg=".($pg-1) ."class=pg><b>&laquo; anterior</b></a>";
        } else {
                echo "<font color=#CCCCCC>&laquo; anterior</font>";
        }     
        // Faz aparecer os numeros das página entre o ANTERIOR e PROXIMO
        for($i_pg=1;$i_pg<$quant_pg;$i_pg++) {
                // Verifica se a página que o navegante esta e retira o link do número para identificar visualmente
                if ($pg == ($i_pg-1)) {
                        echo "&nbsp;<span class=pgoff>[$i_pg]</span>&nbsp;";
                } else {
                        $i_pg2 = $i_pg-1;
                        echo "&nbsp;<a href=".$PHP_SELF."?pg=$i_pg2 class=pg><b>$i_pg</b></a>&nbsp;";
                }
        }
        // Verifica se esta na ultima página, se nao estiver ele libera o link para próxima
        if (($pg+2) < $quant_pg) {
                echo "<a href=".$PHP_SELF."?pg=".($pg+1)." class=pg><b>próximo &raquo;</b></a>";
        } else {
                echo "<font color=#CCCCCC>próximo &raquo;</font>";
        }
?>

Criei outra pagina – Salve como – Pagina.php

<?php
        $numreg = 2; // Quantos registros por página vai ser mostrado, neste caso defini dois pois tinha poucos registros na tabela.
        if (!isset($pg)) {
                $pg = 0;
        }
        $inicial = $pg * $numreg; 

//######### FIM dados Paginação       

        // Faz o Select pegando o registro inicial até a quantidade de registros para página
        $conexao = mysql_connect("localhost","usuario","senha");
        $banco = mysql_select_db("banco",$conexao);                             
        $sql = mysql_query("SELECT * FROM tabela LIMIT $inicial, $numreg",$conexao); 

        // Serve para contar quantos registros você tem na seua tabela para fazer a paginação
        $sql_conta = mysql_query("SELECT * FROM tabela");       

        $quantreg = mysql_num_rows($sql_conta); // Quantidade de registros pra paginação      

        include("paginacao.php"); // Chama o arquivo que monta a paginação. ex: << anterior 1 2 3 4 5 próximo >>      

        echo "<br><br>"; // Vai servir só para dar uma linha de espaço entre a paginação e o conteúdo   

        while ($registro = mysql_fetch_array($sql)) {
               echo $registro["campo"];
               echo "<br>";
        }
?>
ATENÇÃO: Utilizando este script de paginação de resultados, a variável REGISTER_GLOBALS do arquivo de configuração PHP.ini deve estar setado como ON para que funcione.
Qualquer dúvida deixe comentários.

Nenhum comentário:

Postar um comentário