Fazendo paginação com PHP e MySQL

Olá galera do Clube dos Geeks, hoje quero propor a construção de uma página web que liste itens de um banco de dados MySQL e faça a paginação destes itens, ou seja, separe-os por páginas de acordo com uma quantidade máxima estabelecida para as páginas.

Veja o DEMO | Download do arquivo

1 – Para começar você precisa ter instalado o programa WAMP SERVER em sua máquina, ou o LAMP em caso de Linux. Veja como instalar o Wamp;

2 – Agora abra o PhpMyAdmin no wamp digitando localhost/phpmyadmin em seu navegador de preferência, caso precise de login e senha, coloque root no usuário, e deixe a senha em branco;

3 – Crie um banco de dados com o nome de paginador, e uma tabela chamada itens, com os campos id: integer; nome:text; email: text; e insira 20 itens nesta tabela;

4 – Entre na pasta C:\wamp\www, e crie uma pasta chamada paginador, crie dentro dela um arquivo chamado index.php;

5 – No arquivo index.php iniciaremos com a conexão ao banco de dados dentro de uma tag php:


6 – Ainda nesta mesma tag faremos uma consulta ao banco de dados para saber qual a quantidade de itens salvos nele:

        $sql_res=mysql_query("SELECT * FROM itens"); //consulta no banco
	$contador=mysql_num_rows($sql_res); //Pegando Quantidade de itens

 
7 – Depois disso, ainda dentro da tag if(empty($_GET[‘pag’])){ $pag=1; }else{ $pag = “$_GET[pag]”;} //Pegando página selecionada na URL if($pag >= ‘1’){ $pag = $pag; }else{ $pag = ‘1’; }

8 – Para por fim fecharmos a tag, criaremos as variáveis que determinarão o intervalo de busca no banco de dados e a que receberá a quantidade de páginas existentes.

        $maximo=5; //Quantidade Máxima de posts por página
	$inicio = ($pag * $maximo) - $maximo; //Variável para LIMIT da sql
	$paginas=ceil($contador/$maximo);	//Quantidade de páginas	

9 – Depois vem a marcação HMTL da página, que deve ter um cabeçalho(head) e um corpo(body), o cabeçalho deve estar da seguinte forma:



	
		
		
		Paginador
		
		
	

10 – No corpo da nossa página nós usaremos apenas duas tabelas, uma para listar os itens do banco de dados, e outra para distribuir os marcadores das páginas, além de um marcador superior que informará a página atual. Veja o código do marcador superior e da tabela de listagem:


	
ID Nome E-mail

* Note que da linha 10 à 20 nós fazemos a busca no banco de dados, de acordo com os limites determinados pelas variáveis $inicio e $maximo. E mostramos os itens nas linhas 21 a 25, lembrando que estamos dentro de um laço while, que foi iniciado na linha 16.
11 – Depois vamos a tabela que mostra os marcadores de cada página. Note que são feitos vários testes condicionais para saber, por exemplo, se há um número maior de itens do que o máximo determinado.

 Página Anterior"; 
				}
				if($contador<=$maximo){
					echo "";
				}
				else{
					for($i=1;$i<=$paginas;$i++){
						if($pag==$i){
							echo "";
						}else{
							echo "";
						}
					}
				}
				if($pag!=$paginas){
					echo "";
				}
			?>
		
Existe apenas uma única página ".$i." ".$i." Próxima Página

Pronto, está feito nosso paginator, que é bem simples, mas eficiente. A sua única desvantagem é a atualização das páginas ao clicar, mas em breve estarei postando um tutorial sobre como fazer paginadores que funcionem de forma assíncrona, sem que haja a necessidade de atualização da página. Para ver como ficou seu paginador acesse localhost/paginador, de seu navegador.
Até a próxima! Pax et bonum!

Jayr Alencar

Doutorando em Ciências da Computação no Centro de Informática da Universidade Federal do Pernambuco (CIn - UFPE); Mestre pela mesma instituição; Formado em Análise e Desenvolvimento de Sistemas; Católico; Fã de O Senhor do Anéis.

2 thoughts on “Fazendo paginação com PHP e MySQL

  1. Bom dia amigo, primeiramente obrigado por este artigo, muito bom…
    gostaria de uma ajuda sua, é por que não consigo substituir o mysql_connect por PDO, poderia me auxiliar? sou novo com PHP…
    desde já agradeço muito!

Deixe um comentário

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


Deprecated: Creation of dynamic property Daisy_Blog_Google_Local::$files is deprecated in /home2/clube692/public_html/wp-content/themes/daisy-blog/inc/blocks/font-family/inc/class-fonts-google-local.php on line 77

Deprecated: Creation of dynamic property Daisy_Blog_Google_Local::$files is deprecated in /home2/clube692/public_html/wp-content/themes/daisy-blog/inc/blocks/font-family/inc/class-fonts-google-local.php on line 77