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(""); } } ?>
Edição feita por: Dj Thiago, 29/11/2008, 02:34.