Galera tenho este script de paginação, mas o seguinte erro acontece, quando clico na pagina 2 ou em proximo não exibe nada ja cacei no google quem doido mas não consegui resolver este problema, se vcs puderem me ajudar ficarei grato.
Ele pega a categoria direto da Url ( categoria.php?categoria=Comédia ).
segue abaixo o script!$con = mysql_pconnect('localhost','',''); // host, usuário, senha mysql_select_db(''); // banco de dados // bloco 2 - defina o número de registros exibidos por página $num_por_pagina = 10; // bloco 3 - descubra o número da página que será exibida // se o numero da página não for informado, definir como 1 $pagina = $_GET['pagina']; if(!$pagina){ $primeiro_registro = 0; $pagina = 1; }else{ $primeiro_registro = ($pagina - 1) * $num_por_pagina; } // bloco 4 - construa uma cláusula SQL "SELECT" que nos retorne somente os registros desejados // definir o número do primeiro registro da página. Faça a continha na calculadora que você entenderá minha fórmula. //$primeiro_registro = ($pagina*$num_por_pagina) - $num_por_pagina; // consulta apenas os registros da página em questão utilizando como auxílio a definição LIMIT. Ordene os registros pela quantidade de pontos, começando do maior para o menor DESC. $categoria = $_GET["categoria"]; $consulta1 = "SELECT * FROM titulo WHERE categoria='$categoria' ORDER BY idtitulo DESC LIMIT $primeiro_registro, $num_por_pagina"; // executar query $res = @mysql_query($consulta1,$con); // bloco 5 - exiba os registros na tela while($l = @mysql_fetch_array($res)){ $idtitulo = $l["idtitulo"]; $titu_portugues = $l["titu_portugues"]; $link_imagem = $l["link_imagem"]; $idclick = $l["idclick"]; $tamanho = $l["tamanho"]; $titu_original = $l["titu_original"]; ?> <table width="446" border="0" align="center" cellpadding="0" cellspacing="0" class="bordabaixo"> <tr> <td width="59" rowspan="2"><table width="50" border="0" align="left" cellpadding="0" cellspacing="0"> <tr> <td><? echo"<img src='$link_imagem' alt='$titu_portugues' name='thumb' width='79' height='100' id='thumb' />"; ?></td> </tr> </table></td> <td height="36" colspan="2"><span class="unnamed1"><a href="exibe.php?idtitulo=<? echo"$idtitulo";?>"><? echo"$titu_portugues"; ?></a></span><br /> <? echo"$titu_original"; ?> <br /><strong>Tamanho:</strong> <? echo"$tamanho";?></td> </tr> <tr> <td width="226" height="22"><strong>Categoria</strong>: <? echo"$categoria"; ?></td> <td width="161"><strong>Cliques:</strong><? echo"$idclick";?></td> </tr> </table> <? } echo"<center>"; // bloco 6 - construa e exiba um painel de navegabilidade entre as páginas $consulta = "SELECT COUNT(*) FROM titulo WHERE categoria='$categoria' "; list($total_usuarios) = mysql_fetch_array(mysql_query($consulta,$con)); $total_paginas = $total_usuarios/$num_por_pagina; $prev = $pagina - 1; $next = $pagina + 1; // se página maior que 1 (um), então temos link para a página anterior if ($pagina > 1) { $prev_link = "<a href=\"$PHP_SELF?pagina=$prev\">Anterior</a>"; } else { // senão não há link para a página anterior $prev_link = "Anterior"; } // se número total de páginas for maior que a página corrente, então temos link para a próxima página if ($total_paginas > $pagina) { $next_link = "<a href=\"$PHP_SELF?pagina=$next\">Próxima"; } else { // senão não há link para a próxima página $next_link = "Próxima"; } // vamos arredondar para o alto o número de páginas que serão necessárias para exibir todos os registros. Por exemplo, se temos 20 registros e mostramos 6 por página, nossa variável $total_paginas será igual a 20/6, que resultará em 3.33. Para exibir os 2 registros restantes dos 18 mostrados nas primeiras 3 páginas (0.33), será necessária a quarta página. Logo, sempre devemos arredondar uma fração de número real para um inteiro de cima e isto é feito com a função ceil(). $total_paginas = ceil($total_paginas); $painel = ""; for ($x=1; $x<=$total_paginas; $x++) { if ($x==$pagina) { // se estivermos na página corrente, não exibir o link para visualização desta página $painel .= " [$x] "; } else { $painel .= " <a href=\"$PHP_SELF?pagina=$x\">[$x]</a>"; } } // exibir painel na tela echo "$prev_link | $painel | $next_link"; ?>
acredito que vc ta com um erro nessa linha qui oh
$primeiro_registro = ($pagina - 1) * $num_por_pagina;
vc poderia fazer assim, acho que resolve
$primeiro_registro = ($pagina * $num_por_pagina) - $num_por_pagina;
- Wagner Mello likes this