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

Paginação Igual Esse Do Fórum


Pilantra

Pergunta

Olá povo

Eu to fazendo um fórum e to quase terminando, só falta o sistema de busca e a paginação e um pequeno detalhe!!!

Quando tem por exemplo mais de 20 tópicos eu queria que apresentasse outras páginas, igual a do fórum aqui!! Como se faz?!?!

Aproveitando o post, quando o fulano responde o tópico ele não sobe como primeiro tópico, ele continua na posição que foi postado, alguém poderia me dar uma dica para fazer ele subir?! Eu estou identificando os posts por um campo Cod na tabela, e cada forum tem uma tabela, quando a pessoa responde vai-se uma variavel Resposta para ele não listar na hora de visualizar os topicos, pensei em tudo hehe!! não sei se eu to fazendo do jeito certo mas ficou perfeito desse jeito!!! Sem contar esses dois detalhes!!

Obrigado

T+

Pilantra biggrin.gif

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

O segredo na paginacaum em é dividir o total de linhas retornadas em busca pela quantidade de registros exibidos por páginas.

Eu peguei esse codigo na net e adaptei a minha página. Pelos testes que fiz, funcionou perfeitamente. Vê se serve?

$TotLinhas= odbc_num_rows($Resultado);

$TotPaginas=ceil($TotLinhas/Lp);/* Lp seria uma constante que define a quantidade de linhas exibidas por página*/

Esse codigo acima pega o total de páginas disponiveis.

Agora o codigo abaixo exibe os links

                  <?if ($TotPaginas>0){

                      echo "<p align='center' style='word-spacing: 0; line-height: 120%; margin: 0'><font size='2' face='Arial' color='#000080'>Páginas disponíveis</font></p><p align='center' style='word-spacing: 0; line-height: 100%; margin: 0'>";

                      for ($Aux=1;$Aux<=$TotPaginas;$Aux++){

                          if ($_GET["Pag"]==$Aux)

                            echo "<font size=2' face='Arial' color='#000080'><b>".$Aux."</b></font>";

                          else

                            echo "<a Href='resultado.php?Nestacat=".$_GET["Nestacat]."&Pag=".$_GET["Pag"]."&p=.$_GET["p]."&Palavras=".$_GET["Palavras"]."&Exata=.$_GET["Exata]."'><font size='2' face='Arial' color='#000080'>".$Aux."</font></a>";

                      }

                    }?>

Eu aprendi essa paginacao acima desse codigo:

Tutoriais

Como fazer Paginação de resultados?

Neste tutorial iremos aprender a fazer paginação.

Parte 1

Primeiramente vamos executar uma query no mysql.

$sql = mysql_query("SELECT * FROM tabela");

Esta query irá retornar o valor total da tabela.

Vamos então fazer a paginação.

$lpp = 10; // Especifique quantos resultados você quer por página

$total = mysql_num_rows($sql); // Esta função irá retornar o total de linhas na tabela

$paginas = ceil($total / $lpp); // Retorna o total de páginas

if(!isset($pagina)) { $pagina = 0; } // Especifica uma valor para variavel pagina caso a mesma não esteja setada

$inicio = $pagina * $lpp; // Retorna qual será a primeira linha a ser mostrada no MySQL

$sql = mysql_query("SELECT * FROM tabela LIMIT $inicio, $lpp"); // Executa a query no MySQL com o limite de linhas.

Agora iremos fazer o loop para que liste os resultados:

while($l = mysql_fetch_array($sql)) {

  echo "Resultado...

n";

}

Pronto.

Parte 2

Agora iremos fazer com que o PHP gere os links das páginas:

if($pagina > 0) {

  $menos = $pagina - 1;

  $url = "$PHP_SELF?pagina=$menos";

  echo "<a href="$url">Anterior</a>"; // Vai para a página anterior

}

for($i=0;$i<$paginas;$i++) { // Gera um loop com o link para as páginas

  $url = "$PHP_SELF?pagina=$i";

  echo " | <a href="$url">$i</a>";

}

if($pagina < $paginas) {

  $mais = $pagina + 1;

  $url = "$PHP_SELF?pagina=$mais";

  echo " | <a href="$url">Próxima</a>";

}

Pronto. Veremos como fica o script inteiro:

<?

$sql = mysql_query("SELECT * FROM tabela");

$lpp = 10; // Especifique quantos resultados você quer por página

$total = mysql_num_rows($sql); // Esta função irá retornar o total de linhas na tabela

$paginas = ceil($total / $lpp); // Retorna o total de páginas

if(!isset($pagina)) { $pagina = 0; } // Especifica uma valor para variavel pagina caso a mesma não esteja setada

$inicio = $pagina * $lpp; // Retorna qual será a primeira linha a ser mostrada no MySQL

$sql = mysql_query("SELECT * FROM tabela LIMIT $inicio, $lpp"); // Executa a query no MySQL com o limite de linhas.

while($l = mysql_fetch_array($sql)) {

  echo "Resultado...

n";

}

if($pagina > 0) {

  $menos = $pagina - 1;

  $url = "$PHP_SELF?pagina=$menos";

  echo "<a href="$url">Anterior</a>"; // Vai para a página anterior

}

for($i=0;$i<$paginas;$i++) { // Gera um loop com o link para as páginas

  $url = "$PHP_SELF?pagina=$i";

  echo " | <a href="$url">$i</a>";

}

if($pagina < ($paginas - 1)) {

  $mais = $pagina + 1;

  $url = "$PHP_SELF?pagina=$mais";

  echo " | <a href="$url">Próxima</a>";

}

?>

Espero ter ajudado...

Link para o comentário
Compartilhar em outros sites

  • 0

Nossa cara valeu mesmo, eu consegui fazer sozinho o tanto de paginas a exibri mas eu não consegui fazer os registros aparecerem em cada pagina corretamente, você me respondeu na hora certa porque eu já tava de cabelo em pé!! biggrin.gif

thanks a lot

T+

Pilantra

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,3k
    • Posts
      652,2k
×
×
  • Criar Novo...