Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

AprendendoC

[Resolvido] erro com paginação em php

Mensagens Recomendadas

AprendendoC

bom dia galera, bom é o seguinte estou com um probleminha aqui na paginação de resultados, quando eu coloco o LIMIT ele so mostra os 5 primeiros resultados e se tiver mais que 5 ele não mostra o link pra ir pra pagina 2 pra continuar vendo o resto, mas se tiro o LIMIT ele mostra todos os resultados na mesma pagina e mostra o link pra pagina 2..

segue o codigo para darem uma olhada...

<div id="page_content">

<div id="sidebar">
<?php include('sidebars/sidebar.php'); ?>
</div><!-- sidebar -->

<div id="page">
<?php

/* script para fazer paginação */
$pag =$_GET['page'];
if($pag >= 1):
$pag = $pag;
else:
$pag = 1;
endif;
$maximo = 5; // resultados por pagina
$inicio = ($pag * $maximo) - $maximo;
/* aqui termmina o script de paginação */

$topico = $_GET['cat'];
require_once("classes/posts.class.php");
$post = new posts();
$post->extraSelect = "WHERE categoria = '$topico' LIMIT $inicio, $maximo";
$post->selecionaTudo($post);
if($post->linhasAfetadas <= 0):
echo 'nenhum registro encontrado';
else:
while($res = $post->retornaDados()):
 echo '<div class="categoria">';
 printf('<h1>%s</h1>', $res->titulo);
 printf('<span class="info">Data: %s | Autor: %s | Categoria: %s | Visitas: %s</span>', date("d - m - Y | H : i", strtotime($res->data)), $res->autor, $res->categoria, $res->visitas);
 printf('<a href="uploads/%s/%s" rel="shadowbox" >', $res->categoria, $res->img);
 printf('<img src="uploads/%s/%s" alt="" width="150" class="linleft" />', $res->categoria, $res->img);
 printf('</a>');
 printf('<p>%s</p>', $res->texto);
 /* codigo que atualiza as visitas do post no bd */
 $pot = new posts(array(
 'visitas' => $res->visitas+1));
 $pot->valorPk = $res->id;
 $pot->atualizar($pot);
 echo '</div><!-- categoria -->';
endwhile;
/* faz a paginação */
$total = $post->linhasAfetadas;
echo $total;
$paginas = ceil($total/$maximo);
$links = 5;

echo '<a href="index.php?pagina=nav/categoria&cat='.$topico.'&pag=1">Primeira Página</a>   ';

for($i = $pag-$links; $i <= $pag-1; $i++):
 if($i <= 0):
 else:
 echo '<a href="index.php?pagina=nav/categoria&cat='.$topico.'&pag='.$i.'">'.$i.'</a>   ';
 endif;
endfor;

echo $pag.'   ';

for($i = $pag+1; $i <= $pag+$links; $i++):
 if($i > $paginas):
 else:
 echo '<a href="index.php?pagina=nav/categoria&cat='.$topico.'&pag='.$i.'">'.$i.'</a>   ';
 endif;
endfor;

echo '<a href="index.php?pagina=nav/categoria&cat='.$topico.'&pag='.$paginas.'">Última Página</a>   ';
/* termina a paginaçã */
endif;
?>
</div><!-- page -->

</div><!-- page content -->

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Alex.NET

Boas,

deixa ver se percebi, se colocares o Limit, aparece os resultado que queres, mas não aparece o link para a segunda página, e se retirares o limit, aparecem todos (os que deviam e os que não deviam) mas já te aparece o link para a página 2?

cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AprendendoC

umas imagens para explicar melhor... sem o LIMIT aparece todos os que deviam e os que nao deviam e o link pra 2 pagina aparece tbm...33y752r.png

com o LIMIT aparece os resultados que quero mas some o link pra 2 pagina...

96yz2t.png

ai nao tem como ver o s resultados da segunda pagina....

Editado por AprendendoC

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

tens de separar os processos.

- ou limitas com o LIMIT no SQL, e usas um segundo comando para saber quantos registos tens

- ou limitas em PHP, depois de perguntar por todos os registos


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Alex.NET

tens de separar os processos.

- ou limitas com o LIMIT no SQL, e usas um segundo comando para saber quantos registos tens

- ou limitas em PHP, depois de perguntar por todos os registos

eu usei uma páginação à algum tempo e fiz como o HappyHippyHippo disse, useu um 2º SQL para saber o total de registos.

$paginas_cont = ($row3[0])/$pp;

onde o $paginas_cont é igual ao cont do total de registo a dividir pela variavel $pp, que é o numero de registos que quero por página.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AprendendoC

boas galera consegui resolver o meu problema...

eis o que mudei no codigo...

// mudei a parte do get
$pagina = $_GET['pag'];
if(!$pagina ):
 $pagina = 1;
endif;
// e aqui depois do while modifiquei pegando os registros de um campo
$post = new posts();
$post->extraSelect = "WHERE categoria = '$topico'";
$post->selecionaTudo($post);
$total = $post->linhasAfetadas;

obrigado pela ajuda de todos.. finalmente funciono direitinho...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.