sábado, 26 de abril de 2008

Sistema de Paginação com links próximo, anterior, primeiro, último

No último post, eu publiquei um sistema de paginação usando números. Hoje vamos acrescentar links de "próximo", "anterior", "primeiro" e, "último". Com esses links a navegação fica mais fácil. Ou também porque tem gente que gosta de clicar em próximo do que nos números. Vamos lá:
Antes de tudo, temos que saber em que página o usuário está para que possamos exibir os links. Se o usuário estiver na primeira página, não será conveniente mostrar o link "primeira" e/ou "anterior" pois isso poderia dar um erro e/ou então não mostrar nada.
Lógica:
1º - "Pegar" a página que o usuário está;
2º - Se estiver na primeira, mostre "próxima" e "última";
3º - Se estiver em uma maior que a primeira, mostre "primeira", "anterior", "próxima" e, "última";
4º - Se estiver na última, mostra "primeira" e "anterior";

Mas não é só isso. Como o indice começa com "0", quando o usuário está na segunda página e clica em "anterior", o indice fica "1", omitindo assim, o primeiro registro que seria "0". Para isso acresentaremos mais um "if".

$prox_indice = $indice+10; // Pega o valor do indice e aumenta 10 para gerar o indice do link "próximo";
$ants_indice = $indice-10; // Pega o valor do indice e diminui 10 para gerar o indice do link "anterior";
$y = $x-10; // Retira 10 de $x pois quando essa variável sai do loop ela fica com o valor do último indice mais 10;

1º - "Pegar" a página que o usuário está;

if($indice == "0"){ // 2º - Se estiver na primeira, mostre "próxima" e "última";
echo("<a href='$PHP_SELF?indice=11'>Próximo ></a>");
echo("<a href='$PHP_SELF?indice=$y'>Último >|</a>");
}
if($indice >= "11"){ // 3º - Se estiver em uma maior que a primeira, mostre "primeira", "anterior", "próxima" e, "última";
if($indice == $y){ // 4º - Se estiver na última, mostra "primeira" e "anterior";
echo("<a href='$PHP_SELF?indice=0'>|< Primeiro</a>");
echo("<a href='$PHP_SELF?indice=$ants_indice'>< Anterior</a>");
exit;
if($indice == "11"){ // Como o indice começa com "0", quando o usuário está na segunda página e clica em "anterior", o indice fica "1", omitindo assim, o primeiro registro que seria "0";
echo("<a href='$PHP_SELF?indice=0'>|< Primeiro</a>");
echo("<a href='$PHP_SELF?indice=0'>< Anterior</a>");
echo("<a href='$PHP_SELF?indice=$prox_indice'>Próximo ></a>");
echo("<a href='$PHP_SELF?indice=$y'>Último >|</a>");
exit;
}
}
echo("<a href='$PHP_SELF?indice=0'>|< Primeiro</a>");
echo("<a href='$PHP_SELF?indice=$ants_indice'>< Anterior</a>");
echo("<a href='$PHP_SELF?indice=$prox_indice'>Próximo ></a>");
echo("<a href='$PHP_SELF?indice=$y'>Último >|</a>");
}

É isso ai. Dê uma incrementada com HTML e CSS e tudo estará bem. Adicione esse código abaixo do loop "for" do código anterior .

0 comentários: