Suponhamos que tenho mais de 1000 páginas a ser exibidas, gostaria que o numero de links fossem fixo, não precisa ser exatamente como na ordem abaixo, somente para não virar uma eternidade de links.
Exemplo:
Se estou na página 1 mostrar
1 2 3 Próxima >>
e
Se estou na página 3 mostrar
<<Anterior 1 2 3 4 5 Próxima >>
e
Se estou na ultima página mostrar
<<Anterior 15 16 17
Queria sempre deixar 2 páginas anterior e 2 próximas (exceto qdo estiver na 1º o 2º que não teria Anterior e nas Ultimas que não teria Proximas)
o código que estou usando é o seguinte:
// inicia da paginação
// total de registros por página...
// você pode fixar ou deixar que o usuário escolha este valor...
$total_reg = 1;
// 8 registros ou menos...
if ($total2 <= $total_reg) {
$total_paginas = 1;
}
// mais de 8 registros com valor múltiplo de 10...
if ($total2%$total_reg == 0) {
$total_paginas = $total2 / $total_reg;
}
// mais de 10 registros porém o valor não é múltiplo de 10...
else {
// como a divisão não é exata, teremos que subtrair a parte que não é inteira e
// acrescentar 1 página.
$total_paginas = ($total2/$total_reg) - (($total2%$total_reg)/$total_reg) + 1;
}
if(!isset($_GET['pag'])){
$pag = 1;
} else {
$pag = $_GET['pag'];
}
// sabemos que o resultado da consulta é um array multidimensional, onde cada linha
// representa um registro...
// se o usuário está na página 2, devemos exiber as linhas numeradas de 19(inicial) à
// 28(final)...
// lembre-se que as pagina são numeradas iniciando em 1, mas o array de resultados inicia
// em 0(zero)...
$linha_inicial = ($pag - 1) * $total_reg;
$linha_final = $linha_inicial + $total_reg - 1;
// escrevendo os registros...
// vamos usar um marcador para sabermos se estamos entre a linha final e a linha inicial...
$marcador = 0;
//Este loop mostra todas as notícias inseridas no banco de dados
while($dados2 = mysql_fetch_array($sql2)){
// se o marcador está dentro do intervalo desejado, escrevemos o registro...
if ($marcador >= $linha_inicial and $marcador <= $linha_final) {
//incrementamos o marcador...
if($total_paginas != 1){
// se estivermos na primeira página, o link "anterior" não precisa linkar nada...
if ($pag == 1) {
print("");
}
// do contrário, linka a página anterior...
else {
print('<a class="link_12_cinza" href="?pag='.($pag - 1).'" target="_self"><strong>« página anterior</strong></a>');
}
// gerando os números com os respectivos links...
$i = 1;
while ($i <= $total_paginas) {
// a página atual não precisa ser linkada...
if ($i == $pag) {
print("");
}
// as demais páginas deve ser linkadas...
else {
print("");
}
$i = $i + 1;
}
// se estivermos na última página, o link "próximo" não precisa linkar nada...
if ($pag == $total_paginas) {
print("");
}
// do contrário, linka a próxima página...
}else{
print("");
}
}
?>



Postagens
Não informado

