MGC Posted March 24, 2012 at 02:55 PM Report #445462 Posted March 24, 2012 at 02:55 PM Boas amigos, Possuo um problema 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 base do meu site é 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[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>"; $ListingTable .= "</table><br><br>\n"; } else // rows <= bypage (no navbar required) { $ListingTable .= "<br><br>\n"; } felizmente, nas minhas pesquisas consegui este condigo: // 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>"; Agora, gostaria de consiliar os dois. Alguem pode ajudar-me a consiliar os dois codigos? Obrigado pela atenção.
pedrosorio Posted March 24, 2012 at 03:00 PM Report #445464 Posted March 24, 2012 at 03:00 PM A melhor forma de "conciliar" os dois códigos é aprender a programar em PHP. Nós aqui não fazemos consultoria de corte e costura. O que é que já fizeste para resolver o problema no teu código, sem tentar copiar cegamente outro? Não respondo a dúvidas por mensagem.
MGC Posted March 24, 2012 at 03:23 PM Author Report #445466 Posted March 24, 2012 at 03:23 PM Eu não fiz copia nenhuma do codigo. Cederam-me esse codigo, mas infelizmente á pormenores que não entendo. Simplesmente pretendia um pequeno apoio, pois sei que não é muito complicado rectificar o codigo. Com os melhores cumprimentos.... a todos...!
pedrosorio Posted March 24, 2012 at 03:26 PM Report #445467 Posted March 24, 2012 at 03:26 PM Eu não fiz copia nenhuma do codigo. Cederam-me esse codigo, mas infelizmente á pormenores que não entendo. Simplesmente pretendia um pequeno apoio, pois sei que não é muito complicado rectificar o codigo. Com os melhores cumprimentos.... a todos...! Conseguiste fazer tudo menos responder à minha pergunta. O que é que já tentaste? Que pormenores é que não entendes? Não respondo a dúvidas por mensagem.
MGC Posted March 24, 2012 at 06:30 PM Author Report #445478 Posted March 24, 2012 at 06:30 PM Boas, Eu já tentei "adaptar" o meu codigo, com o que foi-me cedido. Infelizmente não sou bom na interpretação do PHP. Até tentei aceder a alguma informação basica da linguagem php, como interpretar as letras, os simbolos, etc. Neste caso sei que terei de substituir o contexto que possuo, nomeadamente na base ... $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 "; } inserindo o codigo $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>"; sei, (julgo) que seja aqui a manipulação. Obrigado pela atenção e ajuda.
brunoais Posted March 24, 2012 at 06:36 PM Report #445479 Posted March 24, 2012 at 06:36 PM Corrige a indentação, sff. Isso está perto de ilegível. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
MGC Posted March 24, 2012 at 07:22 PM Author Report #445484 Posted March 24, 2012 at 07:22 PM Corrige a indentação, sff. Isso está perto de ilegível. Lamento, mas nao percebi o solicitado.....
pedrosorio Posted March 24, 2012 at 07:52 PM Report #445493 Posted March 24, 2012 at 07:52 PM Infelizmente não sou bom na interpretação do PHP. Tens um site, e código em PHP, mas não és bom na interpretação do PHP? Não percebo nada... Lamento, mas nao percebi o solicitado..... http://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o Não respondo a dúvidas por mensagem.
MGC Posted March 24, 2012 at 08:57 PM Author Report #445510 Posted March 24, 2012 at 08:57 PM Boas O codigo que aqui foi apresentado não é meu. Foi cedido por um programador. Tenho site, mas infelizmente o codigo foi adicionado / alterado por um programador que era parceiro no projecto. Simplesmente desejo adicionar ligeiros codigos, de forma a tornar o site mais atual. Caso possam ajudar agradeço. Sei que quem sabe, é fácil conjugar... e até nem é preciso o codigo todo... Obrigado pela sua atenção e compreensão. Abraços.
MGC Posted March 25, 2012 at 01:45 AM Author Report #445548 Posted March 25, 2012 at 01:45 AM Boas amigos, Fiz algumas ligeiras correcções ao script: 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>"; $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 dá 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 uma ajuda de quem tem pratica no assunto. Obrigado pela gentileza em ajudar-me nesta tortura. Abraços. :down: ?
brunoais Posted March 25, 2012 at 09:44 AM Report #445555 Posted March 25, 2012 at 09:44 AM Usa o geshi sff: http://www.portugal-a-programar.pt/index.php?showtopic=6931 O código está melhor mas ainda tem problemas de formatação. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%.
MGC Posted March 25, 2012 at 11:33 AM Author Report #445563 Posted March 25, 2012 at 11:33 AM 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>"; $ListingTable .= "</table><br><br>\n"; } else // rows <= bypage (no navbar required) { $ListingTable .= "<br><br>\n"; } Espero que esteja melhor para entender. Obrigado pela chamada de atenção, e desculpem pela minha falha.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now