Michel_pt Postado Março 22, 2012 Denunciar Share Postado Março 22, 2012 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 | ... | 7mas que quando estiver na pagina 4 apareça as paginas posteriores. Ou seja, fique resumido assim: 1 | ... | 3 | 4 | 5 | 6 | 7O 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...! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JaguA Postado Março 23, 2012 Denunciar Share Postado Março 23, 2012 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>"; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Michel_pt Postado Março 24, 2012 Autor Denunciar Share Postado Março 24, 2012 Boas JaguaObrigado 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: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Michel_pt Postado Março 24, 2012 Autor Denunciar Share Postado Março 24, 2012 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... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Michel_pt
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
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.