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

Paginação


SirSmart

Pergunta

14 respostass a esta questão

Posts Recomendados

  • 0

<?php
/*Sistema de Paginação dos Comentários*/
$registros_por_pagina = 10;
$pagina = empty($HTTP_GET_VARS['pagina'])? 1 : $HTTP_GET_VARS['pagina'];
$pagina_anterior = $pagina - 1; 
$pagina_posterior = $pagina + 1; 
$registro_inicio = ($registros_por_pagina * $pagina) - $registros_por_pagina;
$query = mysql_query("Select com_descricao,loc_login,com_data,com_hora from comentario where pro_codigo = $prj");
$total_de_registros = mysql_num_rows($query);
if ($total_de_registros <= $registros_por_pagina) { 
  $total_de_paginas = 1;
}
elseif (($total_de_registros % $registros_por_pagina) == 0) {
  $total_de_paginas = ($total_de_registros / $registros_por_pagina);
}
else {
  $total_de_paginas = ($total_de_registros / $registros_por_pagina) + 1; 
}
$total_de_paginas = (int) $total_de_paginas;
if (($pagina > $total_de_paginas) || ($pagina < 0)) 
{ 
  echo '<i>O número da página é invalido</i>'; 
  exit;
}
$sql = $sql . " LIMIT $registro_inicio, $registros_por_pagina";
$query = mysql_query($sql); 
$total_de_registros_da_pagina = mysql_num_rows($query); 
if ($total_de_registros_da_pagina == 0) 
{
  echo '<b>Não há comentários nessa página</b>'; 
  exit;
}
$link_de_navegacao = '';   
if($pagina_anterior) 
{
  $link_de_navegacao .= " <a href='comentario.php?pagina=$pagina_anterior&prj=$prj'>«« Anterior</a> "; 
}
for($i = 1; $i <= $total_de_paginas; $i++)
{
  if($i != $pagina)
  {
    $link_de_navegacao .= " <a href='comentario.php?pagina=$i&prj=$prj'>$i</a> ";
  }
  else
  {
    $link_de_navegacao .= " <b>[$i]</b> ";
  }
}
if($pagina != $total_de_paginas)
{
  $link_de_navegacao .= "<a href='comentario.php?pagina=$pagina_posterior&prj=$prj'>Próximo »»</a>"; 
}
echo "<table width='480' border='0'>";
while ($retorno = mysql_fetch_array($query)) {
  echo "<tr>";
  echo "<td width='450'><u>$retorno[1]</u> (<strong>$retorno[2] - $retorno[3]</strong>)</td>";
  echo "</tr>";
  echo "<tr>";
  echo "<td width='450'>$retorno[0]</td>";
  echo "</tr>";
}
echo "</table>";
echo "<hr>";
echo "<table width='480' border='0'>";
echo "<tr><td><center>$link_de_navegacao</center></td></tr>";
echo "</table>";
?>

Futuro sistema de comentários do meu site, mas já usei em vários lugares.

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pela ajuda.

Só gostaria de saber o seguinte:

Quando a gente clica na segunda pagina ele processa a query novamente ou já rodou a query.... Ele apenas "ocultou" nas paginas os registros ??

Outra coisa esta dando erro na linha 40, porque o sql's estão com o mesmo nome...

É assim mesmo ou não??

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Só gostaria de saber o seguinte:

Quando a gente clica na segunda pagina ele processa a query novamente ou já rodou a query.... Ele apenas "ocultou" nas paginas os registros ??

Outra coisa esta dando erro na linha 40, porque o sql's estão com o mesmo nome...

É assim mesmo ou não??

Primeiro: Sim ele processa a query novamente a cada clique nos números das páginas.

Segundo: Há um pequeno erro na linha 6 onde o correto é:

/*Sistema de Paginação dos Comentários*/
$registros_por_pagina = 10;
$pagina = empty($HTTP_GET_VARS['pagina'])? 1 : $HTTP_GET_VARS['pagina'];
$pagina_anterior = $pagina - 1; 
$pagina_posterior = $pagina + 1; 
$registro_inicio = ($registros_por_pagina * $pagina) - $registros_por_pagina;
$sql = "Select com_descricao,loc_login,com_data,com_hora from comentario where pro_codigo = $prj";
$query = mysql_query($sql);

Lembre-se de fazer a conexão com o banco e corrigir os selects para funcionar com as suas tabelas. Quanto a linha 40, não deu erro aqui não.

Link para o comentário
Compartilhar em outros sites

  • 0

Cara desculpa pela outra postagem....

Deixa eu te perguntar um coisa... A variável $prj que está no seu select você passa ela como get depois. porque???

O que está faltando pra mim concertar as outras paginas, porque só me exibe na pagina 1, quando vou para a pagina 2 diz que a pagina o numeor da pagina é inválida.. Não entendi o porque

Se você puder me ajudar eu agradeço

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

$prj é passada através de um link, numa outra página quando eu listo os projetos do meu site. A paginação ainda não está implementada lá.

Se você não colocar a mão na massa e adaptar a minha rotina pra sua página, nós vamos ficar 1 ano aqui e não vamos chegar a lugar algum!!!

Faz o seguinte. Me dá a estrutura da tabela que você tem pra fazer a paginação e como vai funcionar o processo que eu vou analisar e te dizer!!

Link para o comentário
Compartilhar em outros sites

  • 0

É o seguinte :

O meu Select faz o seguinte:

SELECT count(op_precos.id_fornec) as cout_fornec, op_produtos.cod_fornec, op_precos.id_produto, 
op_precos.valor  , op_precos.id_fornec, op_produtos.descricao, op_produtos.especificacao,
op_produtos.id, op_precos.valor, op_produtos.fabricante	
FROM op_precos 
JOIN op_produtos ON op_precos.id_produto = op_produtos.id
WHERE op_produtos.descricao = '".$_SESSION['busca']."'  	
GROUP BY op_precos.id_produto, op_produtos.fabricante 
ORDER BY op_precos.valor  

Aí eu faço a paginação que você me passou. O problema é que quando eu clico pra ir a segunda pagina

Ele não vem nada...

Eu só mudei o select que você fez... Só gostaria de saber se eu tenho que passar alguma coisa como parametro ou não????

porque a minha estrutura do sistema, está passando primeiro para uma tela chamada produto.pho que eu pego a sessão e chamo a paginação....

Só isso quando eu clico no link da segunda pagina eu chamo produto.php e assim concecutivamente....

Acho que é isso

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Pra continuar passando você vai fazer exatamente assim:

if($pagina_anterior) 
{
 $link_de_navegacao .= " <a href='comentario.php?pagina=$pagina_anterior&busca=$SESSION['busca']'>«« Anterior</a> "; 
}
for($i = 1; $i <= $total_de_paginas; $i++)
{
 if($i != $pagina)
 {
   $link_de_navegacao .= " <a href='comentario.php?pagina=$i&busca=$SESSION['busca']'>$i</a> ";
 }
 else
 {
   $link_de_navegacao .= " <b>[$i]</b> ";
 }
}

Aí vai passar para a próxima página com a sua variável de busca. Deve resolver...

Link para o comentário
Compartilhar em outros sites

  • 0

Cara está me dando erro nas linhas por causa das aspas...

Então eu fiz o seguinte

if($pagina_anterior) 
{
$link_de_navegacao .= ' <a href="produtos.php?pagina=$pagina_anterior&busca=$SESSION["busca"]">«« Anterior</a> '; 
}
for($i = 1; $i <= $total_de_paginas; $i++)
{
if($i != $pagina)
{
  $link_de_navegacao .= '<a href="produtos.php?pagina=$i&busca=$SESSION["busca"]">$i</a>';
}
else
{
  $link_de_navegacao .= " <b>[$i]</b> ";
}
} 
Eu inverti as aspas... Só que está me saindo assim no numero da paginação

[1] $i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$i$iPróximo »» 

Se você puder me ajudar eu agradeço

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

tenta assim...

if($pagina_anterior) 
{
  $link_de_navegacao .= " <a href=".'"'."comentario.php?pagina=$pagina_anterior&busca=$SESSION[".'"'."busca".'"'."]".'"'.">«« Anterior</a> "; 
}
for($i = 1; $i <= $total_de_paginas; $i++)
{
  if($i != $pagina)
  {
    $link_de_navegacao .= " <a href=".'"'."comentario.php?pagina=$i&busca=$SESSION[".'"'."busca".'"'."]".'"'.">$i</a> ";
  }
  else
  {
    $link_de_navegacao .= " <b>[$i]</b> ";
  }
}

Link para o comentário
Compartilhar em outros sites

  • 0

Então eu fiz o seguinte

  if($pagina_anterior) 
{
 $link_de_navegacao .= " <a href='produtos.php?pagina=$pagina_anterior&busca=$_SESSION[busca]'>«« Anterior</a> "; 
}
for($i = 1; $i <= $total_de_paginas; $i++)
{
 if($i != $pagina)
 {
   $link_de_navegacao .= " <a href='produtos.php?pagina=$i&busca=$_SESSION[busca]'>$i</a> ";
 }
 else
 {
   $link_de_navegacao .= " <b>[$i]</b> ";
 }
} 

o problema é que quando vou para a segunda pagina me mostra a seguinte mensagem
O número da página é invalido

Eu não entendo o porque disso.....

Será que é porque eu estou chamando a mesma pagina novamente.. Tipo eu chamo produtos que chama paginação. Quando clico na segunda pagina, eu chamo produtos que chama paginação novamente..

Será que é isso??

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0
Eu não entendo o porque disso.....

Será que é porque eu estou chamando a mesma pagina novamente.. Tipo eu chamo produtos que chama paginação. Quando clico na segunda pagina, eu chamo produtos que chama paginação novamente..

Será que é isso??

if (($pagina > $total_de_paginas) || ($pagina < 0)) 
{ 
 echo '<i>O número da página é invalido</i>'; 
 exit;
}

Ou a $pagina é maior que $total_de_paginas ou $pagina tá vindo menor q 0

Debuga dando um echo $pagina e echo $total_de_paginas pra saber o que tá vindo!!!

Link para o comentário
Compartilhar em outros sites

  • 0

Então o problema é que quando eu vou para a segunda pagina ele não executa a query novamente e me retorna 0 no total_de_registros

$total_de_registros = mysql_num_rows($query);

A logica é sempre passar na query a cada pagina clicada ou não??

Eu estou fazendo errado??

Até mais

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,5k
×
×
  • Criar Novo...