Ir para conteúdo
Fórum Script Brasil
  • 0

Limitar paginas ::: paginação


Michel_pt

Pergunta

Boas amigos,

Possuo um probleminha no meu site....!

Quero limitar o numero de paginas que são expostas. Ou seja, cada vez que acrescento conteudo aumenta o numero de paginas.

Por exemplo: 1 | 2 | 3 | 4 | 5 | 6 | 7

o que pretendo é limitar:

Exemplo: 1 | 2 | 3 | 4 | ... | 7

mas que quando estiver na pagina 4 apareça as paginas posteriores. Ou seja, fique resumido assim: 1 | ... | 3 | 4 | 5 | 6 | 7

O codigo que possuo é este:

$rnav = mysql_query($qnav) or die(mysql_error());

$rows = mysql_num_rows($rnav);

if($rows > $ByPage)

{

$ListingTable .= "<table class=\"tlistnav\" border=0 cellspacing=0 align=center width=100% >";

$ListingTable .= "<tr><td align=center><font face=verdana size=2> | ";

$pages = ceil($rows/$ByPage);

for($i = 0; $i <= ($pages); $i++)

{

$PageStart = $ByPage*$i;

$i2 = $i + 1;

if($PageStart == $Start)

{

$links[] = " <span class=CurrPageIdx>$i2</span>\n\t ";

}

elseif($PageStart < $rows)

{

$links[] = " <a class=BlackLink href=\"search.php?Start=$PageStart&c=$_GET[c]&s=$_GET&search_kw=$_GET[search_kw]&CategoryID=$_GET[CategoryID]&search_district=$_GET[search_district]&search_place=$_GET[search_place]&search_city=$_GET[search_city]&PostID=$_GET[PostID]&zip=$_GET[zip]&old=$_GET[old]\">$i2</a>\n\t ";

}

}

$links2 = implode(" | ", $links);

$ListingTable .= $links2;

$ListingTable .= "| </td></tr>";

$ListingTable .= "</table><br><br>\n";

}

else // rows <= bypage (no navbar required)

{

$ListingTable .= "<br><br>\n";

}

alguém pode ajudar nesta dor de cabeça?

Obrigada pela ajuda pessoal...!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Olha esse é o que eu uso, e faz exatamente como você quer, eu removi os botões de Proxima pagina e Pagina anterior dexei somente a Ultima e Primeira, de qualquer forma o que você precisa é o calculo de como exibir somente uma certa quantidade de paginas... tu da uma olhada no codigo e tenta por no seu, vou ser bem sincero, ta mt tard e to pingando de sono qualquer coisa se tu não cosneguir amanha eu lhe ajudo com mais detalhes, mas esta tudo comentando então tenho certeza que tu vai entender ^^.

// Número máximos de botões de paginação 
$max_links = 2; 
// Exibe o primeiro link "primeira página", que não entra na contagem acima 
echo "<a href='?painel=lista&p=1'><li class='text'>Primeira Pagina</li></a> "; 
// Cria um for() para exibir os links antes da página atual 
for($i = $p-$max_links; 
    $i <= $p-1; 
    $i++) { 
// Se o número da página for menor ou igual a zero, não faz nada 
// (afinal, não existe página 0, -1, -2..) 
if($i <=0) { 
//faz nada 
// Se estiver tudo OK, cria o link para outra página
} else { echo "<a href='?painel=listar&p=$i'><li>$i</li></a> "; } } 
// Exibe a página atual, sem link, apenas o número 
echo " <li class='page'><a href='?painel=listar&p=$p' title=''> $p </a></li> "; 
// Cria outro for(), desta vez para exibir os links após a página atual 
for($i = $p+1; 
    $i <= $p+$max_links; 
    $i++) { 
// Verifica se a página atual é maior do que a última página. Se for, não faz nada.
if($i > $pags) { 
//faz nada 
} 
// Se tiver tudo Ok gera os links.
else { echo "<a href='?painel=listar&p=$i'><li>$i</li></a> "; } } 
// Exibe o link 'última página' 
echo "<a href='?painel=listar&p=$pags'><li class='text'>Ultima Pagina</li></a>";

Link para o comentário
Compartilhar em outros sites

  • 0

Boas Jagua

Obrigado pelas dicas...

já tentei, mas sou mole em php...!

Não há possibilidade de dares uma ajuda e colocar o codigo OK? É que meu codigo é um pouco diferente do teu... Como "casar" os dois codigos.

Ah! Mais uma questão:

Este codigo dá para inserir numa pagina de informação?! Ou seja, poder nas paginas onde esteja a informação, possamos expor o tema anterior e tema seguinte, mas com o Titulo do tema.

Aguardo uma dica "ma friend"

Abraços

:rolleyes:

Link para o comentário
Compartilhar em outros sites

  • 0
Olha esse é o que eu uso, e faz exatamente como você quer, eu removi os botões de Proxima pagina e Pagina anterior dexei somente a Ultima e Primeira, de qualquer forma o que você precisa é o calculo de como exibir somente uma certa quantidade de paginas... tu da uma olhada no codigo e tenta por no seu, vou ser bem sincero, ta mt tard e to pingando de sono qualquer coisa se tu não cosneguir amanha eu lhe ajudo com mais detalhes, mas esta tudo comentando então tenho certeza que tu vai entender ^^.

// Número máximos de botões de paginação 
$max_links = 2; 
// Exibe o primeiro link "primeira página", que não entra na contagem acima 
echo "<a href='?painel=lista&p=1'><li class='text'>Primeira Pagina</li></a> "; 
// Cria um for() para exibir os links antes da página atual 
for($i = $p-$max_links; 
    $i <= $p-1; 
    $i++) { 
// Se o número da página for menor ou igual a zero, não faz nada 
// (afinal, não existe página 0, -1, -2..) 
if($i <=0) { 
//faz nada 
// Se estiver tudo OK, cria o link para outra página
} else { echo "<a href='?painel=listar&p=$i'><li>$i</li></a> "; } } 
// Exibe a página atual, sem link, apenas o número 
echo " <li class='page'><a href='?painel=listar&p=$p' title=''> $p </a></li> "; 
// Cria outro for(), desta vez para exibir os links após a página atual 
for($i = $p+1; 
    $i <= $p+$max_links; 
    $i++) { 
// Verifica se a página atual é maior do que a última página. Se for, não faz nada.
if($i > $pags) { 
//faz nada 
} 
// Se tiver tudo Ok gera os links.
else { echo "<a href='?painel=listar&p=$i'><li>$i</li></a> "; } } 
// Exibe o link 'última página' 
echo "<a href='?painel=listar&p=$pags'><li class='text'>Ultima Pagina</li></a>";
Amigo Jagua Eu andei a quebrar a minha mente e consegui fazer uma melhoria, mas continua-me a dar erro. Passo a explicar.....
if(!empty($_GET[Start]))
{
   $Start = $_GET[Start];
}
else
{
   $Start = '0';
}

// limite de links
$ByPage = '13';

$rnav = mysql_query($qnav) or die(mysql_error());
      $rows = mysql_num_rows($rnav);


         if($rows > $ByPage)
         {
       
       
                                  $ListingTable .=  "<table class=\"tlistnav\" border=0 cellspacing=0 align=center width=100% >";
            $ListingTable .= "<tr><td align=center><font face=verdana size=2> | ";

            $pages = ceil($rows/$ByPage);
         $pagesLimit = 10;//Limite de páginas 
         
         $lowAllow = (int)($Start - ($pagesLimit / 2)); 
            $start = ($lowAllow <= 0) ? 1 : $lowAllow; 
            $aboveAllow = $start + $pagesLimit; 
            $until = ($aboveAllow > $pages) ? $pages : $aboveAllow; 

            for($i = $start; $i <= $until; $i++) 
            {
               $PageStart = $ByPage*$i;
   
               $i2 = $i + 1;
   
               if($PageStart == $Start)
               {
                  $links[] = " <span class=CurrPageIdx>$i2</span>\n\t ";
               }
               elseif($PageStart < $rows)
               {
$links[] = " <a class=BlackLink href=\"search.php?Start=$PageStart&c=$_GET[c]&s=$_GET[s]&search_kw=$_GET[search_kw]&CategoryID=$_GET[CategoryID]&search_district=$_GET[search_district]&search_place=$_GET[search_place]&search_city=$_GET[search_city]&PostID=$_GET[PostID]&zip=$_GET[zip]&old=$_GET[old]\">$i2</a>\n\t ";   
   
               }
            }

            $links2 = implode(" | ", $links);
      
            $ListingTable .= $links2;
         

            $ListingTable .= "| </td></tr>";
            //JRM 2011 tablefix added </tr> to tlisnav

            $ListingTable .= "</table><br><br>\n";

         }
         else  // rows <= bypage (no navbar required)
         {
          $ListingTable .= "<br><br>\n";
         }
Infelizmente o codigo esta a dar erro, pois a pagina 1 (primeira pagina) não aparece, e quando clico na pagina dois já so aparece 9 | 10 | 11 e não aparece a pagina 1 | ou posteriores. Testando com limite de 5, o resultado inicial da paginação é: 2 | 3 | 4 | 5 Nas paginas seguintes da erro: Warning: implode() [function.implode]: Invalid arguments passed in C:\Programas\xampp\htdocs\teste\search.php on line 511 linha 511 corresponde ao codigo:
$links2 = implode(" | ", $links);

Agradecia a ajuda no assunto.

Obrigado pela gentileza em ajudar...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...