Jump to content


Photo

Botão Anterior Na Paginação


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

#1 douglas.ck

douglas.ck

    Ativo

  • Usuários
  • 390 posts
  • Sexo:Masculino

Posted 09/08/2005, 17:55

Eu procurei na busca e encontrei bastante coisa sobre paginação, mas não consegui fazer o que preciso...

Vejam bem... por exemplo, eu tenho 4 paginas para paginar:

Eu gostaria de uma paginação assim:

0 | 1 | 2 | 3 | 4 | Próxima

Quando eu clicasse no 1,2,3 ou 4 o botão "Anterior" aparecesse, ficando assim:

Anterior | 0 | 1 | 2 | 3 | 4 | Próxima

O código que esta abaixo faz desaparecer o botão "Próxima" quando clico na ultima pagina, que seria a 4, só que o botão "Anterior" aparece sempre.

Poderiam por favor me ajudar a fazer funcionar igual no botão "Anterior" como funciona no "Proxima"???

<?
	}
}

echo "<table><tr><td>";
echo "<center>";
if($pagina > 0)
echo "Página: <b>$pagina</b><br><br>"; 
{
	$menos = $pagina - 1;
	$url = "?abrir=mostra_resultado&pagina=$menos";
	echo "<a href='$url'>Anterior</a>";
}
for($i=0;$i<$paginas;$i++) 
{
	$url = "?abrir=mostra_resultado&pagina=$i";
	echo " | <a href='$url'>$i</a>";
}
if($pagina < ($paginas - 1)) 
{
	$mais = $pagina + 1;
	$url = "?abrir=mostra_resultado&pagina=$mais";
	echo " | <a href='$url'>Próxima</a>";
}
echo "</center>";
echo "</td></tr></table>";
}
else
	echo "<br><br>[ Nenhum Registro encontrado. ]";


include "db_close.php";
?>

Agradeço a atenção.

Obrigado

Douglas

Edição feita por: douglas.ck, 10/08/2005, 17:20.


#2 CSFInfo

CSFInfo

    Normal

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

Posted 10/08/2005, 01:25

if($pagina > 0)

echo "Página: <b>$pagina</b><br><br>";

{

$menos = $pagina - 1;

$url = "?abrir=mostra_resultado&pagina=$menos";

echo "<a href='$url'>Anterior</a>";

else {"";}

}


#3 ph_Rodrigues

ph_Rodrigues

    Jesus, take me back !!!

  • Usuários
  • 322 posts
  • Sexo:Masculino
  • Localidade:Goiânia-GO

Posted 10/08/2005, 09:29

 if($pagina > 0)

{

echo "Página: <b>$pagina</b><br><br>"; //coloca essa parte dentro das chaves

$menos = $pagina - 1;

$url = "?abrir=mostra_resultado&pagina=$menos";

echo "<a href='$url'>Anterior</a>";

} 


Edição feita por: ph_Rodrigues, 10/08/2005, 09:29.

Pedro Henrique de M. Rodrigues <GO-Goiânia>

<----------- JESUS, O PÃO DA VIDA!!! ----------->

Zaplim - Soluções em Internet
Portal Veste Moda Brasil

#4 Paulo Freitas

Paulo Freitas

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

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

Posted 10/08/2005, 11:35

Hum ... pensando nestes probleminhas bobos de lógica que o pessoal enfrenta, resolvi fazer um simples exemplo de lógica ... aí vai ... B)

Copiem este código e salve-o com o nome logica.php. (y)

O funcionamento é simples didático: se a página atual for maior que 1, o a mensagem da página anterior transforma-se em link, caso contrário, apenas exibe a mensagem. E para a mensagem da próxima página, se a página atual for menor que o número máximo de páginas, ela transformar-se-á em link, caso contrário, apenas exibe-a. ^_^
<?php

/*
 * Extrai a página atual
 */

extract($_GET);

/*
 * Se não estiver configurada ou for menor ou igual à 0, mudá-la para 1
 */

if (!isset($pagina) || $pagina <= 0)
{

    $pagina = 1;

}

/*
 * Definir o número máximo de páginas
 */

$maximo_paginas = 10;

/*
 * Calcular o número da página anterior e próxima
 */

$anterior = $pagina - 1;
$proxima  = $pagina + 1;

/*
 * Configurar a mensagem de exibição 'Anterior'
 */

if ($anterior >= 1)
{

    $mensagem_anterior = '<a href="./logica.php?pagina=' . $anterior . '">Anterior</a>';

} else {

    $mensagem_anterior = 'Anterior';

}

/*
 * Configurar links das páginas disponíveis
 */

for ($paginas = 1; $paginas <= $maximo_paginas; $paginas++)
{

    /*
     * Define os links das páginas e a página atual
     */

    if ($paginas == $pagina)
    {
        $pagina_atual = '<strong>' . $paginas . '</strong>';
    } else {
        $pagina_atual = '<a href="./logica.php?pagina=' . $paginas . '">' . $paginas . '</a>';
    }

    /*
     * Define o caractere divisor dos links
     */

    if ($paginas != $maximo_paginas)
    {
        $links_paginas .= ' ' . $pagina_atual . ' -';
    } else {
        $links_paginas .= ' ' . $pagina_atual;
    }

}

/*
 * Configurar a mensagem de exibição 'Próxima'
 */

if ($proxima <= $maximo_paginas)
{

    $mensagem_proxima = '<a href="./logica.php?pagina=' . $proxima . '">Próxima</a>';

} else {

    $mensagem_proxima = 'Próxima';

}

print  $mensagem_anterior . ' ' . $links_paginas . ' ' . $mensagem_proxima;

?>
[]’s :DAté mais

#5 douglas.ck

douglas.ck

    Ativo

  • Usuários
  • 390 posts
  • Sexo:Masculino

Posted 10/08/2005, 12:12

agradeço os colegas porém...


CSFInfo - o código que você postou deu pau na pagina, não funcionou... sumiu tudo :(


ph_Rodrigues - o seu código esta igual ao meu, não entendi o que você quis dizer com "//coloca essa parte dentro das chaves"...


Paulo Freitas - sua explicação foi legal... mas não resolveu o meu problema... do jeito que esta explicado não vai mais aparecer 1 |2 |3 etc... né?


Desculpem minha ignorancia... mas não entendo muito do php... e pelo que vio nos tópicos aqui do forum é comum o pessoal se perder nas paginações...

Agradeço novamente se puderem me ajudar ainda mais.

Obrigado

Douglas

#6 Paulo Freitas

Paulo Freitas

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

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

Posted 10/08/2005, 12:50

Paulo Freitas - sua explicação foi legal... mas não resolveu o meu problema... do jeito que esta explicado não vai mais aparecer 1 |2 |3 etc... né?

Sim, minha explicação se limitou às mensagens Anterior e Próxima, o resto tu já tinha feito ... ^_^

Porém, como fiz para o pessoal em geral, adicionei esta funcionalidade no script de exemplo de lógica ... ;)

Ah, e também devo lembrar que se trata de uma paginação básica, pois ele exibe o link de todasas páginas que tiver, e não por exemplo só das 10 mais próximas da atual ... isto demandaria-me um tempo maior que eu não possuo ... :unsure:

[]’s :DAté mais

#7 douglas.ck

douglas.ck

    Ativo

  • Usuários
  • 390 posts
  • Sexo:Masculino

Posted 10/08/2005, 17:19

mas tipo assim...

com o código que eu postei la em cima... não tem como incluir uma forma do link "Anterior " aparecer só depois que a gente clicar em algum numero da paginação??

Conforme o exemplo la em cima depois que clicar na pagina "4", que é a ultima pagina, o link "Próxima" desaparece....

Só que o "Anterior" fica sempre aparecendo... que coisa... parece simples mas ja tentei de tudo quanto foi maneira e nada... é duro a gente não saber. :( hehehehe

Se puderem me auxiliar ainda mais... fico grato.

E obrigado por tudo que ja responderam ai pessoal.

Até.

Douglas

#8 Paulo Freitas

Paulo Freitas

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

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

Posted 10/08/2005, 17:24

Seguindo meu exemplo, veja só:

<?php

/*
* Configurar a mensagem de exibição 'Anterior'
*/

if ($anterior >= 1)
{

  $mensagem_anterior = '<a href="./logica.php?pagina=' . $anterior . '">Anterior</a>';

} else {

  $mensagem_anterior = 'Anterior';

}

?>

É só remover o que está em negrito. Depois disso é só fazer o mesmo com a mensagem Próximo ... ;)

[]’s :DAté mais

#9 douglas.ck

douglas.ck

    Ativo

  • Usuários
  • 390 posts
  • Sexo:Masculino

Posted 10/08/2005, 17:38

olá Paulo Freitas!

No seu código entendi o que você quer explicar.

Mas no meu código que postei, desculpe, mas minha ignorancia no assunto não me permite entender o que voce quer me explicar...

Não sou programador... só tento quebrar o galho.

Seria um pouco mais facil se me mostrasse no código que eu postei... posso ir testando ele para ver se funciona...

Peço desculpas pela insistencia... mas isso seria importante para mim.

Obrigado

Douglas

#10 douglas.ck

douglas.ck

    Ativo

  • Usuários
  • 390 posts
  • Sexo:Masculino

Posted 22/08/2005, 18:36

olá amigos.

perguntei a alguns dias sobre o problema acima... alguem poderia me dar uma mão... ainda não consegui fazer funcionar correto como descrevo la em cima.

Agradeço a atenção.

Douglas

#11 Klaus

Klaus

    @ ubuntu jaunty

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

Posted 23/08/2005, 09:35

OK, julgando pelo tempo passado, posta aí as 10 formas que você tentou que eu adapto pra você.
Klaus Paiva
Conheça também: Taperás

#12 henriquefr

henriquefr

    12 Horas

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

Posted 23/08/2005, 13:33

vou postar um q vc vai funcionar do jeito q vc quer ....

<?

$link_p_pag = 4; //aki vai ficar    1 - 2 - 3 - 4 - Proximo .... vc colocar quanto vc quiser
$reg_p_pag = 20; //registro por pagina ...
$pag = $_GET['pag'];

$busca = mysql_query("SELECT count(*) FROM cliente;");
$registros = mysql_result($busca,0);

$num_total_paginas = ($registros%$reg_p_pag==0)?$registros/$reg_p_pag:floor($registros/$reg_p_pag)+1;

if (!$pag)
$pag = 1;

$inicio = ($reg_p_pag*$pag)-$reg_p_pag;


$query = "SELECT * FROM cliente ORDER BY id LIMIT $inicio, $reg_p_pag";
$result = @mysql_query($query);

while ($row = mysql_fetch_assoc($result))
{

  //$id = $row['id'];
$nome = $row['nome'];
$login = $row['login'];

?>

seu codigo aki <?php echo $nome ?>

Aqui é a paginação agora ... ele soh vai aparece o "Anterior" quando for necessario....

<?
}
$anterior = $pag-1;
if ($anterior<1)
echo "";
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>";

?>


qualquer duvida posta ae ... ai eh soh fazer as mudaçar para fica com "|" entre os numeors ...

Edição feita por: henriquefr, 23/08/2005, 13:52.

<?php

?>




0 user(s) are reading this topic

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

IPB Skin By Virteq