Jump to content


Photo

[Resolvido] Erro Na PaginaçãO


  • Faça o login para participar
3 replies to this topic

#1 Wagner Mello

Wagner Mello

    Novato no fórum

  • Usuários
  • 8 posts
  • Sexo:Não informado

Posted 19/07/2010, 15:41

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";
?>


#2 Salsero

Salsero

    Normal

  • Usuários
  • 60 posts
  • Sexo:Masculino
  • Localidade:Salvador
  • Interesses:PHP e Banco de Dados

Posted 20/07/2010, 17:23

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;

Vagner Fonseca
Programador PHP e BD
Posted Image Meu post lhe ajudou? Reputar/votar é uma das formas de agradecer.

#3 k9studio

k9studio

    k9studio

  • Usuários
  • 291 posts
  • Sexo:Masculino
  • Interesses:php, mysql, asp

Posted 20/07/2010, 18:06

Olá Amigo,

Se entendi certo mude está parte do código que vai funcionar:
if ($pagina > 1) {
$prev_link = "<a href=\"$PHP_SELF?categoria=$categoria&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?categoria=$categoria&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?categoria=$categoria&pagina=$x\">[$x]</a>";

}
}

Edição feita por: k9studio, 20/07/2010, 18:08.


#4 Wagner Mello

Wagner Mello

    Novato no fórum

  • Usuários
  • 8 posts
  • Sexo:Não informado

Posted 21/07/2010, 12:33

olá k9 fiz igual vc passou e deu certo muito obrigado já reputei vc e o salsero que me deu uma força obrigado




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq