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

Paginação - Qual é O Erro?!?!?


dev

Pergunta

huh.gif

EDITEI ESSE TÓPICO SÓ PARA AVISAR QUE O CÓDIGO ATUAL É O LÁ DE BAIXO, COM AS ÚLTIMAS ALTERAÇÕES QUE FIZ. MUITO OBRIGADO.

Oi, Pessoal. Tenho aprendido bastante aqui no fórum e já consigo resolver alguns probleminhas que aparecem, mas ainda tenho MUITO chão pela frente...

Ó só, gente, estou usando um código para paginação de resultados do BD, antes tinha só anterior e próxima (página) e funcionava legal. Só que resolvi colocar as páginas direto (1 -2 -3...)e agora bixô o negócio....

Por ex: quando faço uma busca, na primeira página do resultado aparece tudo blznha (02 página de resultado por ex.), mas se eu clico em qualquer link de página (1 -2 -3...) ou no Próxima, aparece o resultado geral (com 37 paginas).

Segue o código, se alguém puder verificar qual é o erro, agradeço demais, pois já olhei de cima em baixo várias vezes, fiz alguns testes... mas não resolveu!

Também gostaria muito de entender o que devo fazer para classificar a paginação por letra, andei pesquisando mas ainda não encontrei nada que eu conseguisse entender, se puderem me ajudar nisso também, agradeço muito. Mas por agora estou pendente é com esse código acima, mesmo !

[]s

Dev.

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

Não entendi o seu problema, cara.

Se for postar o código de novo, poste só a parte onde está o problema. Esse bando de HTML em volta dificulta e muito a leitura.

Aposto que várias pessoas entraram aqui e não responderam por causa do seu código gigante com HTML misturado... smile.gif

Mas explica melhor o que está acontecendo, quando acontece porque você acha que acontece e tal...

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, cara. beleza?

Concordo que o html confunde, é que já aconteceu de eu colocar só parte do código e alguém "descobrir" que está faltando um ; ou um ?>, por isso coloquei completo. Já editei lá em cima.

Não faço idéia de qual seja o problema, por isso preciso de ajuda.

O que acontece é que a paginação é referente ao resultado da busca mas está aparecendo todos os registros do BD e não só o resultado de acordo com a busca, deu pra entender?

EX: faço uma busca sem nenhuma paalvra-chave, o resultado é "todos os registros do BD" (com 35 paginas) aí funciona tudo ok.

faço uma busca com a palavra-chave "G", o resultado é "somente os registros que tem a letra G" e a paginação aparece ok (com 04 páginas), no entanto, quando clico em "proxima" ou em qualquer página, muda tudo e me dá o resultado com "todos os registros do BD" (com 35 páginas).

Desculpe não consigo explicar melhor que isso.

Continuo fazendo algumas tentativas, mas não está funcionando.

Agradeço a quem puder me ajudar.

[]'s

Dev.

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, Pessoal. POR FAVOR, preciso muito de ajuda!!!!!!

Tenho que entregar meu trabalho e SÓ FALTA CORRIGIR A PAGINAÇÃO... Sei que vocês não gostam de dar nada mastigado, o que eu concordo, pois só assim dá pra aprender... Mas olha só, já fiz vários testes, ANALISEI o código com o pouco conhecimento que tenho, pesquisei na internet e aqui no fórum mas NÃO CONSIGO resolver.

Estou postando o código só com PHP, com as últimas modificações que fiz.

Não consigo explicar melhor o que acontece...

Quando faço uma busca, aparece o resulta com "x" páginas, mas, quando clico no link de páginas (qualquer uma), o resultado inicial "desaparece" e passa a exibir "todos" os registros independente da busca feita, com muito mais páginas.

<?

require "conecta.php";

require_once("verifica.php");

$palavra   =   $_POST[txtpesq]; ?>

html...

<?

$registros_por_pagina = 5; // auto explicativo

$pagina = empty($HTTP_GET_VARS['pagina'])? 1 : $HTTP_GET_VARS['pagina'];

$id = $HTTP_GET_VARS['id'];

$query =  "SELECT * from dados WHERE login LIKE '$palavra%'";

$pagina_anterior = $pagina - 1;

$pagina_posterior = $pagina + 1;

$registro_inicio = ($registros_por_pagina * $pagina) - $registros_por_pagina;

$resultado = mysql_query($query);

$total_de_registros = mysql_num_rows($resultado);

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 'número da página inválido'; }

$query = $query . " LIMIT $registro_inicio, $registros_por_pagina";

$resultado = mysql_query($query);

$total_de_registros_da_pagina = mysql_num_rows($resultado);

if($total_de_registros_da_pagina > 0) {  ?>

html...

  <?  while ($array_usuario = mysql_fetch_array($resultado)) {

             echo $array_usuario['idade']  ?>

mais impressões de dados...

  <? }   } ?>

<? $link_de_navegacao = '';

if($pagina_anterior){

    $link_de_navegacao .= " <font face=Arial size=2><a href='$PHP_SELF?pagina=$pagina_anterior'>Anterior</a> "; }

for($i = 1; $i <($total_de_paginas + 1); $i++)  // <=$total_de_paginas;

{

    if($i != $pagina)     {

        $link_de_navegacao .= " <font face=Arial size=2><a href='$PHP_SELF?pagina=$i'>$i</a> ";

    }else{

        $link_de_navegacao .= " <font face=Arial size=2><b>[$i]</b> ";

    }  }

if($pagina != $total_de_paginas) {

    $link_de_navegacao .= "<font face=Arial size=2><a href='$PHP_SELF?pagina=$pagina_posterior'>Próximo</a>";

} echo $link_de_navegacao;

?>

html...

Espero que alguém consiga entender o meu problema e, principalmente, solucioná-lo.

Desde já agradeço muito.

Abraços,

Dev.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, cara, não ignorei seu tópico não, o que aconteceu foi que eu não vi a sua resposta.

Antes de mais nada, você precisa me dizer se entende o que está sendo feito ali, porque esse código é claramente baixado pronto de algum lugar.

Você está usando métodos antigos para pegar valores enviados para o PHP; não se usa mais $HTTP_GET_VARS desde o PHP3, cara. Estamos no PHP5 já. Você precisa atualizar isso aí pra $_POST e $_GET... smile.gif

Sobre o problema principal. É claro que ele vai perder o filtro depois que você clicar em um link porque você não está passando esse parâmetro. Então, quando você abre essa página novamente clicano em próxima, você reseta o filtro.

Você precisa deixar uma variável no link ou em uma session pra página saber que você ainda quer que o filtro seja aplicado. Senão ela se perde... smile.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Agradeço muito por sua atenção Error404.

Bom, cara, não ignorei seu tópico não, o que aconteceu foi que eu não vi a sua resposta.

Peço desculpas se me interpretei mal, não quis reclamar... só estou ficando nervoso comigo mesmo por não conseguir resolver um problema que parece ser simples.

Realmente, achei estranho o $HTTP_GET_VARS, mas já tentei tanta coisa e não deu certo... acabei pegando esse código pronto.

Estou pesquisando bastante sobre PHP, mas confesso que ainda tenho muita dificuldade na lógica.

"entendi" o que você me explicou, mas sinceramente, não sei como fazer!

Pode me orientar?!? Espero que me ajude...

Desde já, muito obrigado pela força.

Abraços

Dev.

Link para o comentário
Compartilhar em outros sites

  • 0

´´E muito complicado querer entender juntando códigos com outros códigos, pois ficaremos sem entender muita coisa, o que eu posso dizer para isso não acontecer com você é você começar entendendo o que cada coisa faz, mais em código pequeno, tipo assim, você faz a consulta e tente ir pondo valor na query e ir entendo como funciona os resultados, ai sim você pode aplicar a lógica...

Bom no seu script o que está faltando é o que o ERROR falou...

Veja:

<?

require "conecta.php";

require_once("verifica.php");

$palavra   =   $_POST[txtpesq];

?>

html...

<?

$registros_por_pagina = 5; // auto explicativo

$pagina = empty($HTTP_GET_VARS['pagina'])? 1 : $HTTP_GET_VARS['pagina'];

$id = $HTTP_GET_VARS['id'];

$query =  "SELECT * from dados WHERE login LIKE '$palavra%'";

$palavra, existe quando você submete o formulário, ai quando você passa os dados via get, você não dar o valor para $palavra sendo então ele buscará tudo que estiver na base, resumindo $palavra, terá que pegar o valor quando for enviado via POST e depois reconhcer quando o valors está passndo por via GET.

Ex:

if($_POST['palavra]) $palavra = $_POST['palavra'];

if($_GET['palavra']) $palavra = $_GET['palavra];

Então nos links de navegação, você deverá colocar:

$link_de_navegacao .= " <font face=Arial size=2><a href='$PHP_SELF?pagina=$pagina_anterior&palavra=".$palavra."'>Anterior</a> "; }

cool.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Olá,

Estou pesquisando bastante sobre PHP, mas confesso que ainda tenho muita dificuldade na lógica.

Se você está com dificuldade na Lógica fica difícil você resolver esse problema visto q você não ta sabendo como tudo tá funcionando. No seu lugar eu primeiro faria uma paginação simples somente com Proximo e Anterior, mas q entendesse a lógica... Feito isso aí sim você pode complementar a paginação com 1234...20 ou algo melhor como Primeiro Anterior 12345...20 Próximo Último

Abraço...

Link para o comentário
Compartilhar em outros sites

  • 0

Agradeço a vocês pela ajuda.

Já fiz uma paginação simples e, por isso, estou fazendo a implementação com os números de página.

Diante do que vocês me informaram, entendi o que faltava, mas não consegui resolver, porém tive informações suficientes para fazer novas pesquisas e consegui identificar um código que tem o que preciso.

Vou continuar pesquisando e testando até aprender, mas, no momento, tenho urgência em finalizar este trabalho.

Estou postando no fórum o código completo, caso alguém precise do mesmo que eu.

Abraços a todos.

Valeu!

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...