Página Inicial > Php + Mysql > Paginação com PHP

Paginação com PHP

Vou explicar
uma maneira simples e fácil de fazer uma paginação
no php usando banco mysql.

A consulta no mysql é
feita de forma que o LIMIT é quem define onde vai começar
e quantos registros eu quero a partir do momento que começou a
listar.

Ex: $sql= “Select * from Tabela LIMIT 4,10″;
No exemplo acima ele vai mostrar os resultados da 4 pagina definindo que
cada pagina tem 10 registros.

Bem isso é o básico agora vamos detalhar o codigo completo:

//Esta linha define que a variavel pagina pode vir
em GET ou POST que ele vai puxar de qualquer forma

$pagina = (empty($_POST['pagina']))?$_GET['pagina']:$_POST['pagina'];

//Aqui vai definir o total de registros que eu quero
por página e vai verificar se a variavel $pagina vinher vazia então
ele vai setar como valor=1 ou seja se não vinher nada ele define
a pagina padrão como 1.

$total = “20″; // número de registros
por página
if (
empty($pagina)) {
$pc = “1″;
} else {
$pc = $pagina;
}

//uma vez que sempre o php tem como pagina inical a 0 então vamos
dizer que $pagina é sempre igual o valor que recebeu menos 1

$inicio = $pc – 1;

// definindo a partir de que ponto começa
a consulta ou seja ele pega a pagina que recebeu e multiplica pelo total
de registros que foi limitado por página e assim saberá
a partir de onde começar a consulta

$inicio = $inicio * $total;

//Aqui ele faz a consulta com o limite de páginas
que a gente ja definiu acima e preste atenção no código
pois nele ta detalhando a partir de onde começa e quantos valores
quero exibir

$limite = mysql_query(“select * from Tabela
LIMIT $inicio,$total”)
or die (“Erro no SQL:” .mysql_error());

//Aqui vc vai saber o total de páginas para
caso queira fazer uma paginação com numeros tipow [1][2][3]
então vc vai precisar saber o total de paginas e isso e simples
vc so precisa saber quantos registros existem sem limitar por total e
dividi-los pelo total limite que vc definiu por página

$tr = mysql_query(“Select * from Tabela”);
$tr = mysql_num_rows($tr); //total de registros
$TotalPagina = $tr / $total;
$tp = floor($tp)
; //como nem sempre o valor
é exato e as vezes vem 3.7 ou 2.5 vamos arredonda-lo com a função
floor.

Bem
agora ja temos toda a consulta LIMITANDO registros por pagina e paginando-os
de acordo com o total de páginas, basta agora criar os botoes anterior
e próximo.


//Aqui ele vai definir que $anterior significa o
numero de paginas -1 e proxima o numero de paginas +1

$anterior = $pc -1;
$proximo = $pc +1;


//Então ele vai verificar se $pc for maior que 1 ele vai exibir
o botão próxima e se $pc for menor que ou igual ao total
de páginas ele mostra o botão anterior.

if
($pc>1) {
print (“<a href=’{$_SERVER['PHP_SELF']}?pagina=$anterior’>[Anterior]</a>”);
}
if ($pc<=$tp) {
print (“<a href=’{$_SERVER['PHP_SELF']}?pagina=$proximo’>[Proxima]</a>”);
}

//e para exibir o total de paginas vc vai usar a
função for, que não precisa nem eu explicar o seu
funcionamento pois ela propria se auto detalha, caso queira mais informações

http://php.net/for

for ($i = 0; $i <= $tp; $i++) {
$num = $i+1;
print(“<a href=’{$_SERVER['PHP_SELF']}?pagina=$num’>>[$num]</a>”);
}

Espero ter ajudado
a quem queria aprender paginação.

Categories: Php + Mysql Tags:
  1. Nenhum comentário ainda.
  1. Nenhum trackback ainda.