Jump to content


Photo

Paginação "inteligente"


  • Faça o login para participar
5 replies to this topic

#1 WeeD

WeeD

    12 Horas

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

Posted 13/09/2005, 14:34

Ae fazendo favor, estou com um probleminha na paginção pois ela não está com falta de "segurança" pois quando eu digito uma "ID (não numérica)" la na barra de endereço da erro na pagina, ou quando digito uma "ID (numérica) ele continua "paginando" mesmo sem resultado. como posso está arrumando isso pra quando for uma "ID" invalida, ele voltar pra pagina 1 ou a anterior que tava antes ?

E outra coisa, se não for pedir muito alguem poderia me ajudar ao invez da paginção ser a "metade" do total de registro. ela ficar por padrão assim:

Pagina: 1 de 10 : 1 2 3 >
Pagina: 1 de 10 : 1 2 3 >
Pagina: 1 de 10 : 1 2 3 >
Pagina: 1 de 10 : 4 5 6 >

<?php
 $num_por_pagina = 5;
 if (!isset($_GET['pagina'])) { $pagina = 1; } else { $pagina = $_GET['pagina']; }
  $primeiro_registro = ($pagina * $num_por_pagina) - $num_por_pagina;
  $consulta = mysql_query("SELECT * FROM users ORDER BY id ASC LIMIT $primeiro_registro,$num_por_pagina");
 while($x = mysql_fetch_array($consulta)) {
  echo(''.$x['id'].' - '.$x['user'].'<br>');
 }
  $contar = mysql_query("SELECT COUNT(*) FROM users");
  list($total_usuarios) = mysql_fetch_array($contar);
  $total_paginas = ($total_usuarios / $num_por_pagina);

  $prev = $pagina - 1;
  $next = $pagina + 1;
  
 if ($pagina > 1) { $prev_link = "<a href='$PHP_SELF?pagina=$prev'><font class='webdings'>-</font></a>"; } else { $prev_link = ""; }
 if ($total_paginas > $pagina) { $next_link = "<a href='$PHP_SELF?pagina=$next'><font class='webdings'>+</font></a>"; } else { $next_link = ""; }

  $total_paginas = ceil($total_paginas);
  $painel = "";
 for ($x = 1; $x <= $total_paginas; $x++) {
 if ($x == $pagina) { $painel .= "<b class='vinho'>$x</b>"; } else { $painel .= "<a href='$PHP_SELF?pagina=$x'> $x </a>"; }
}
 echo "<br><b>P&aacute;gina: $pagina de $x :</b> $prev_link $painel $next_link";
?> 

Obrigado!

Edição feita por: WeeD, 13/09/2005, 14:36.

còé ?

#2 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 13/09/2005, 14:40

1- Basta um IF, verifique se existem registros a serem exibidos de acordo com o ID da página recebido. Se existirem exibe, caso não, redireciona.

2- Basta imprimir apenas três links de paginação.
Klaus Paiva
Conheça também: Taperás

#3 WeeD

WeeD

    12 Horas

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

Posted 13/09/2005, 15:00

to conseguindo não. :(
còé ?

#4 henriquefr

henriquefr

    12 Horas

  • Usuários
  • 209 posts
  • Sexo:Não informado
  • Localidade:Cuiabá-MT
  • Interesses:PHP, Ajax e JavaScript.

Posted 13/09/2005, 15:01

<?
$link_p_pag = 3;
$anterior = $pag-1;
if ($anterior<1)
echo "Anterior - ";
else
echo "<a href=\"{$_SERVER['PHP_SELF']}?pag=$anterior\">Anterior</a> - ";

for($i=1; $i<$pag; $i++)
if($i>=$pag-$link_p_pag)
echo "<a href=\"{$_SERVER['PHP_SELF']}?pag=$i\">$i</a> - ";

echo "<b>$pag</b>";

for($i=$pag+1; $i<=$num_total_paginas; $i++)
if($i<=$pag+$link_p_pag)
echo " - <a href=\"{$_SERVER['PHP_SELF']}?pag=$i\">$i</a>";

$proxima = $pag+1;
if ($proxima>$num_total_paginas)
echo " - Próxima";
else
echo " - <a href=\"{$_SERVER['PHP_SELF']}?pag=$proxima\">Próxima</a>";
?>


isso tem no forum ..
vai ficar assim

Anterior - 1 - 2 - 3 - Proxima
Anterior - 1 - 2 - 3 - Proxima
Anterior - 3 - 4 - 5 - Proxima

vai ser mais ou menos assim ... mas nao tenho certeza .. mas se tiver na primeira pagina ... ele tira o Anterior .. e se tiver na ultima ele remove Proxima ...
(y)


--------------------------

Ae fazendo favor, estou com um probleminha na paginção pois ela não está com falta de "segurança" pois quando eu digito uma "ID (não numérica)" la na barra de endereço da erro na pagina, ou quando digito uma "ID (numérica) ele continua "paginando" mesmo sem resultado. como posso está arrumando isso pra quando for uma "ID" invalida, ele voltar pra pagina 1 ou a anterior que tava antes ?


se vc pesquisar nas 7 , 10 primeiras paginas do forum... em um topico sobre isso ...

e eh soh fazer igual o Klaus falou ...

Edição feita por: henriquefr, 13/09/2005, 15:04.

<?php

?>

#5 WeeD

WeeD

    12 Horas

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

Posted 13/09/2005, 17:16

acho que consegui fazer aqui não tenho certeza. :(

EDITANDO:

num deu certo pois esse ae exibi 3 antes e 3 depois da pagina atual. e não do modo de 3 em 3. eu tirei o "primeiro" for mas mesmo assim num ta indo ainda de 3 em como falei ali em cima. :/

Edição feita por: WeeD, 13/09/2005, 17:27.

còé ?

#6 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 14/09/2005, 03:33

Certa vez fiz um tópico sobre a mesma dúvida com o mesmo título que o teu. Faça uma busca aí que tu vai achar ele ... ;)

[]’s :D Até mais




1 user(s) are reading this topic

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

IPB Skin By Virteq