Jump to content
AprendendoC

[Resolvido] erro com paginação em php

Recommended Posts

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 -->

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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....

Edited by AprendendoC

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.