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.