Jump to content


Photo

Ajuda Na Paginação


  • Faça o login para participar
Nenhuma resposta neste tópico

#1 Dj Thiago

Dj Thiago

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Não informado

Posted 29/11/2008, 02:31

Pessoal, estou com um problema que está me tirando do sério, sou meio que novato em PHP, e preciso fazer minha páginação exibir o seguinte:

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.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq