Skip to content

Paginação em PHP

Paginação em PHP

Fala galera!

Hoje vamos tratar de um assunto importante para os programadores PHP: paginação.

Para que serve a paginação em PHP?

Muitas vezes o retorno de uma consulta SQL traz vários registros, e para que a página não seja muito extensa, é necessário dividi-los em páginas. E para evitar que sejam criados vários arquivos com cada página, é adicionado um script que faz a paginação. Vamos aprender e entender como funciona essa paginação em PHP.

Preparando o script

Seguindo nosso tutorial para criar CRUD em PHP, vamos utilizar a tabela ‘produto’ neste tutorial. Mas antes, precisamos de algumas variáveis básicas para fazer a paginação:

$pagina = isset($_GET["pagina"]) ? $_GET["pagina"] : "1"; // página atual, caso não exista assume o valor 1
$limite = 10; // limite de registros por páginas
$links = 3; //número de links exibidos antes e depois da página atual
$inicio = ($pagina-1) * $limite; //define o início da consulta, no caso o primeiro parâmetro do LIMIT

IMPORTANTE: não devemos nos esquecer de adicionar o LIMIT na nossa query! É ele quem trará os registros para suas respectivas páginas.

Retornando os dados

Vamos agora fazer o SELECT que irá trazer os nossos registros. Para fazer a paginação, devemos ter duas queries: uma para trazer o total de registros, e outra para trazer as queries da página atual.

$sqlPaginacao = mysql_query("SELECT * FROM produto ORDER BY id ASC"); //retorna o total de registros da tabela
$paginas = intval((mysql_num_rows($sqlPaginacao)-1) / $limite); //faz o cálculo do número de páginas

$sql = mysql_query("SELECT * FROM produto ORDER BY id ASC LIMIT $inicio, $limite"); //retorna o registros da página atual
while($dados=mysql_fetch_array($sql)) {
    // faz a exibição dos dados
}

Finalmente: a paginação!

Depois de consultar e exibir os dados, vamos colocar a nossa paginação para funcionar.

A primeira parte é simples: um link para a primeira página e para a página anterior. Para tal, precisamos apenas de um IF verificando se a página atual não é a primeira.

if(($pagina) > 1) {
    echo '<a href="?pagina=1">&laquo; Primeira</a> ';
    $anterior = $pagina - 1;
    echo '<a href="?pagina='.$anterior.'">Anterior</a> ';
}

Vamos agora exibir a página atual, e os links das outras páginas. Precisamos de um laço FOR para percorrer as páginas, respeitando o limite de links a serem exibidos.

for ($i = ($pagina-1)-$links; $i<($paginas + 1); $i++) {
    if ($i == $pagina -1) { //verifica se não é a página atual
        echo ($i+1) . ' ';
    } else {
        if($i+1>0 && $i<$pagina+$links) {
            $pag = $i+1;
            echo '<a href="?pagina='.$pag.'">'.$pag.'</a>&nbsp;';
        }
    }
}

E por último, vamos exibir os links para próxima e última páginas.

if ($pagina-1 < $paginas) {
    $proxima = $pagina+1;
    echo '<a href="?pagina='.$proxima.'">Próxima &rsaquo;</a>';
    $ultima = $paginas + 1;
    echo '&nbsp;<a href="?pagina='.$ultima.'">Última &raquo;</a>';
}

Pronto! Nossa paginação em PHP está finalizada.

A princípio, talvez possa parecer um pouco confuso, mas seguindo a lógica linha-a-linha fica fácil de compreender o script completo.

Veja nosso tutorial de paginação em PHP em funcionamento.

Até mais, galera!

No comment yet, add your voice below!


Add a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *