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

Problema com paginação


Parisi

Pergunta

E ai Pessoal, beleza !?

Seguinte.. estava com dificuldades pra criar uma busca interna com bd mysql, mas enfim consegui um código que funcionasse, mas não estou conseguindo realizar a paginação.

Eu já tenho um código de paginação que eu uso em outras paginas, mas nessa dá erro.

O Formulário simples..

<form action="resultado.php" method="post">
<input type="text" name="palavra" size="22" maxlength="150" style="background:#f9f9f1; border:1pt; font-size: 10px; color: #666666; font-family: Verdana, Arial, Helvetica, sans-serif;"/>
<input name="submit" type="submit" value="Pesquisar" style="background:none; border:none; font-weight:bold; font-size: 11px; color: #666666; font-family: Verdana, Arial, Helvetica, sans-serif;"/>
</form>
O código..
<?php
$conexao = mysql_connect("localhost", "root", "senha")
or die ("Erro na ligação à banco de dados.");
$db = mysql_select_db("banco_dados")
or die ("Erro ao selecionar a base de dados.");

if(isset($_POST['palavra'])) {

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

        /* Altera os espaços adicionando no lugar o simbolo % */
       
        $qr = "SELECT * FROM tabela WHERE campo1 LIKE '%".$palavra."%' OR campo2 LIKE '%".$palavra."%' OR campo3 LIKE '%".$palavra."%' OR campo4 LIKE '%".$palavra."%' ORDER BY nome ASC";
       
        // Executa a query no Banco de Dados
        $sql = mysql_query($qr);
       
        // Conta o total de resultados encontrados
        $total = mysql_num_rows($sql);
        
        echo "$total resultados encontrados em nosso banco de dados.";

// Gera o Loop com os resultados
while($r = mysql_fetch_array($sql)) {
$nome = $r["nome"];
$descricao = $r["descricao"];
$endereco = $r["endereco"];
$telefone = $r["telefone"];
$imagem = $r["imagem"];
$link = $r["link"];
                
                                echo "MOSTRA OS RESULTADOS ENCONTRADOS";
  }
}

?>
Mas não consigo colocar a paginação.. Eu tenho usado esse codigo aqui:
// Pegar a pagina atual por GET
$p = $_GET["p"];

// Verifica se a variavel ta declarada, senao deixa na primeira pagina como padrão
if(isset($p)) {
$p = $p;
} else {
$p = 1;
}
// Defina aqui a quantidade maxima de registros por pagina.
$qnt = 10;
// O sistema calcula o inicio da seleçao calculando: 
// (pagina atual * quantidade por pagina) - quantidade por pagina
$inicio = ($p*$qnt) - $qnt;
e depois do código de resultados da busca, o restante do código da paginação..
// Faz uma nova seleção no banco de dados, desta vez sem LIMIT, 
// para pegarmos o número total de registros
$sql_select_all = "SELECT * FROM lanchonetes ORDER BY nome ASC";
// Executa o query da seleção acimas
$sql_query_all = mysql_query($sql_select_all);
// Gera uma variável com o número total de registros no banco de dados
$total_registros = mysql_num_rows($sql_query_all);
// Gera outra variável, desta vez com o número de páginas que será precisa. 
// O comando ceil() arredonda 'para cima' o valor
$pags = ceil($total_registros/$qnt);
// Número máximos de botões de paginação
$max_links = 2;
// Exibe o primeiro link 'primeira página', que não entra na contagem acima(3)
echo "<a href='resultado.php?p=1' target='_self'>Primeira</a> | <b>";
// Cria um for() para exibir os 3 links antes da página atual
for($i = $p-$max_links; $i <= $p-1; $i++) {
// Se o número da página for menor ou igual a zero, não faz nada
// (afinal, não existe página 0, -1, -2..)
if($i <=0) {
//faz nada
// Se estiver tudo OK, cria o link para outra página
} else {
echo "</b><a href='resultado.php?p=".$i."' target='_self'>".$i."</a> | <b>";
}
}
// Exibe a página atual, sem link, apenas o número
echo $p." ";
// Cria outro for(), desta vez para exibir 3 links após a página atual
for($i = $p+1; $i <= $p+$max_links; $i++) {
// Verifica se a página atual é maior do que a última página. Se for, não faz nada.
if($i > $pags)
{
//faz nada
}
// Se tiver tudo Ok gera os links.
else
{
echo "</b>| <a href='resultado.php?p=".$i."' target='_self'>".$i."</a> ";
}
}
// Exibe o link "última página"
echo "</b>| <a href=resultado.php?p=".$pags."' target='_self'>Ultima</a> ";
?>

Lembrando que no código do resultados, eu complemento com o LIMIT $inicio, $qnt - para limitar o numero de paginas e tal..

Em todas as outras paginas que eu fiz do mesmo jeito a paginação funcionou perfeitamente, mas essa da erro..

Já tentei procurar outros codigo pra tentar descobrir o problema ou tentar criar outro, mas não consegui..

Nesse caso, até abre a pesquisa.. calcula o valor das paginas correto, mas por exemplo:

Se no BD tem 30 resultados e eu quero mostrar 10 por pagina, ele abre os 10 primeiros e mostra o link das 3 paginas embaixo, mas quando clica no link das proximas paginas, dá erro.. e o $total de paginas não mostra todas do BD..

Se alguém puder me dar uma luz ou souber de outro jeito de fazer paginação que dê certo, espero que me ensinem..

Obrigado pela atençao..

Abraços

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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,9k
×
×
  • Criar Novo...