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">« 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> '; } } }
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 ›</a>'; $ultima = $paginas + 1; echo ' <a href="?pagina='.$ultima.'">Última »</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!