Kªwªkªmi 0 Denunciar post Postado Julho 5, 2010 Olá de novo pessoal, Bom, hoje é o seguinte, estou com um sistema de paginação, porém ele tem um defeito. Se ele vê que o banco gera 1000 páginas, ele mostra as mil páginas. O que eu gostaria é que quando o número de páginas mostrados do indice chegasse a 5 ele não mostrasse o resta da quantidade de páginas, mas sim um "...", e quando ele chegasse na página 5 o indice mostrasse as páginas até a 10, e antes do número 5 um "...", e depois da página 10 se tivesse outras páginas mostrasse um "..." Bom irei mostrar imagens para deixar mais lúdico o que eu necessito: Forma de paginação do meu script: Forma que eu gostaria: <<Anterior [1] 2 3 4 5 ... Próximo>> Ai se o usuário chega na página 5: <<Anterior ... 4 [5] 6 7 8 9 ... Próximo>> Bom é mais o menos isso que eu queria, se alguem puder me ajudar eu agradeço! Estou tentando fazer esse efeito na paginação faz tempo! Ah, e ai vai meu script se alguem puder editar ele pra mim já eu agradeço: <?php include('conexao_com_o_bd.php'); ?> <?php $pagessize = 20; // Quantos registros por página vai ser mostrado if($_GET['pages']){ $pages = $_GET['pages']; }else{ $pages = 0; } ?> <table width="700" align="right" cellpadding="0" cellspacing="20" border="0"> <tr> <td><p><font face="Calibri">Veja nossos artigos:</font></p> <p> </p> <p><font face="Calibri"> <?php $sql = "SELECT * FROM artigos_entrevistas WHERE publicado = 1 AND tipo = 1 ORDER BY data ASC"; $resultado = mssql_query($sql, $link) or die ("Não foi possível executar a consulta"); $nrecs = mssql_num_rows($resultado); $npages = ceil($nrecs/$pagessize); $npages++; $startrec = $pagessize * $pages; $n = 0; $s = 0; while ($linha=mssql_fetch_array($resultado)) { if(($n>=$startrec) &&($s<$pagessize)){ $id = $linha["id"]; $titulo = $linha['titulo']; echo "<p><a href='artigos_det.php?id=".$id."'><li>".$titulo."</li></p>"; $s++; } $n++; } ?> </tr> <tr> <td align="center"><?php if ( $pages > 0) { echo "<a href='".$PHP_SELF."?&pages=".($pages-1) ."' class=pg><b><font face=Calibri size=2> « Anterior</font></b></a>"; } else { echo "<font color=#CCCCCC face=Calibri size=2> « Anterior</font>"; } for($i=1;$i<$npages;$i++) { if ($pages == ($i-1)) { echo " <span class=pgoff><font face=Calibri color=#cf111111 size=2><strong> [$i]</strong></font></span> "; } else { $x = $i-1; echo " <a href='".$PHP_SELF."?&pages=$x' class=pg><b><font face=Calibri size=2> $i</font></b></a> "; } } if (($pages+2) < $npages) { echo "<a href='".$PHP_SELF."?&pages=".($pages+1)."' class=pg><b><font face=Calibri size=2> Próximo »</font></b></a>"; } else { echo "<font color=#CCCCCC face=Calibri size=2> Próximo »</font>"; } ?></td> </tr> </table> Obrigado desde já galera! Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
EuToComProblema! 1 Denunciar post Postado Julho 6, 2010 <?php include('conexao_com_o_bd.php'); ?> <?php $pagessize = 20; // Quantos registros por página vai ser mostrado if($_GET['pages']){ $pages = $_GET['pages']; }else{ $pages = 0; } ?> <table width="700" align="right" cellpadding="0" cellspacing="20" border="0"> <tr> <td><p><font face="Calibri">Veja nossos artigos:</font></p> <p> </p> <p><font face="Calibri"> <?php $sql = "SELECT * FROM artigos_entrevistas WHERE publicado = 1 AND tipo = 1 ORDER BY data ASC"; $resultado = mssql_query($sql, $link) or die ("Não foi possível executar a consulta"); $nrecs = mssql_num_rows($resultado); $npages = ceil($nrecs/$pagessize); $npages++; $startrec = $pagessize * $pages; $n = 0; $s = 0; while ($linha=mssql_fetch_array($resultado)) { if(($n>=$startrec) &&($s<$pagessize)){ $id = $linha["id"]; $titulo = $linha['titulo']; echo "<p><a href='artigos_det.php?id=".$id."'><li>".$titulo."</li></p>"; $s++; } $n++; } ?> </tr> <tr> <td align="center"><?php if ( $pages > 0) { echo "<a href='".$PHP_SELF."?&pages=".($pages-1) ."' class=pg><b><font face=Calibri size=2> « Anterior</font></b></a>"; } else { echo "<font color=#CCCCCC face=Calibri size=2> « Anterior</font>"; } //ADICIONEI ESSE IF/ELSE if($npages > 5) { for($i=1;$i<6;$i++) { if($i == 1 || $i == 5) echo "..."; //echo o resto das páginas. } } else { for($i=1;$i<$npages;$i++) { if ($pages == ($i-1)) { echo " <span class=pgoff><font face=Calibri color=#cf111111 size=2><strong> [$i]</strong></font></span> "; } else { $x = $i-1; echo " <a href='".$PHP_SELF."?&pages=$x' class=pg><b><font face=Calibri size=2> $i</font></b></a> "; } } } if (($pages+2) < $npages) { echo "<a href='".$PHP_SELF."?&pages=".($pages+1)."' class=pg><b><font face=Calibri size=2> Próximo »</font></b></a>"; } else { echo "<font color=#CCCCCC face=Calibri size=2> Próximo »</font>"; } ?></td> </tr> </table> não li o código com cuidado, mas teoricamente você já fez a parte mais difícil, agora você só faz um laço até 5 caso tenha mais de 5 paginas... (seria legal colocar um link de última e primeira página tb) Compartilhar este post Link para o post Compartilhar em outros sites
ricardo.haas 0 Denunciar post Postado Julho 6, 2010 Cara da uma olhada na instrução LIMIT do mysql, dai você especifica do total de resultados qual parte você vai mostrar... $limitstart=10;//a partir de $limit=20;//quantos registros a partir do start $list = "SELECT * FROM table LIMIT $limitstart.",".$limit; acho que você terá de fazer um sql para a paginação e outro para a exibição os resultados Compartilhar este post Link para o post Compartilhar em outros sites