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

Sistema de busca palavra impedindo a busca


Phil Santos

Pergunta

Olá pessoal,

 

Antes de mais nada gostaria de pedir perdão quanto à indentação do códígo que vou postar aqui. Estou aprendendo.

 

Eu fiz um sistema de busca, na realidade eu aprendi com um tutorial, está dando tudo certo, exceto por uma coisa, existem 4 situações:

 

1- Não digito nada no campo de busca e clico no botão. Resultado: o sistema da a mensagem correta.

 

2- Digito uma palavra ou misturas de letras que eu sei que não estão no banco. Resultado: o sistema da a mensagem correta.

 

3- Eu digito 2 ou mais palavras que eu sei que estão no banco. Resultado: o sistema exibe o reultado corretamente.

 

4- Eu digito 1 palavra que eu sei que está no banco e 1 palavra que eu sei que não está no banco.Resultado: o sistema desconsidera a palavra que está no banco e dá a mensagem de "Nenhum resultado encontrado" ao invés de considerar a palavra que está no banco e exibir o resultado.

 

A palavra que não existe está impedindo de o resultado para a palavra que existe aparecer. Eu preciso que o resultado apareça mesmo que o usuário digite 10 palavras ou mais e apenas uma constar no banco.

 

Peço aos colegas que me ajudem a resolver esse problema por gentileza, valeu!

 

Segue o código:

 

  1. <?php
  2. if(isset($_POST['botao'])){
  3. $busca = $_POST['busca'];
  4. if($busca == "" or $busca == " "){
  5. header('location:http://www.meudominio.com.br/digitealgoparaabusca.php');
  6. }else{
  7. $busca_dividida = explode(' ',$busca);
  8. $quant = count($busca_dividida);
  9. $id_mostrado = array("");
  10. for($i=0;$i<$quant;$i++){
  11. $pesquisa = $busca_dividida[$i];
  12. $sql = mysql_query("SELECT * FROM busca WHERE conteudo LIKE '%$pesquisa%'");
  13. $quant_campos = mysql_num_rows($sql);
  14. if($quant_campos == 0){
  15. header('location:http://www.meudominio.com.br/nenhumresultado.php');
  16. }else{
  17. while($linha = mysql_fetch_array($sql)){
  18. $id = $linha['id'];
  19. $titulo = $linha['titulo'];
  20. $conteudo = $linha['conteudo'];
  21. if(!array_search($id, $id_mostrado)){
  22. echo "<div class='resultado'>
  23. <p>".$conteudo."</p>
  24. </div>
  25. <br />
  26. ";
  27. array_push($id_mostrado, $id);
  28. }
  29. }
  30. }//do else
  31. //for($i;$i<count($id_mostrado);$i++){
  32. //echo $id_mostrado[$i]."<br />";
  33. //}
  34. }//do for
  35. }//so else campo vazio
  36. }//do if botão pressionado
  37. ?>

 

Atenciosamente,

 

Phil

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Por que fazer a consulta em um loop? Não faz sentido algum. Sempre que um resultado não for encontrado, será feito o redirecionamento. Por isso o problema

Use uma única consulta, juntando os filtros do WHERE com OR. Nunca faça consultas em loops. Isso gera uma enorme perda de desempenho.

Veja: http://rberaldo.com.br/o-problema-do-n-mais-1/

Sugiro também ler meu guia gratuito de dias e fundamentos. Link na minha assinatura

 

PS: funções mysql_* estão obsoletas desde o PHP 5.5  e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/


 

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