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

Problema ao buscar palavras-chave


PhoenixWings

Pergunta

Boa tarde a todos. Implementei um sistema de busca simples mas eu não obtenho retorno ao buscar um livro através de uma palavra-chave.

Segue abaixo os códigos inerentes à implementação. E mais uma vez, obrigado.

Ferramenta de busca

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Sistema de Busca</title>
</head>
 <body>
    <div style="text-align: center;">
       <h1>Sistema de busca de livros I.T Books</h1>
          <form action="retornabusca.php" method="POST">
            <input type="text" name="busca" size="40" />
            <input type="submit" value="Buscar Livro" name="ok" />
          </form>
    </div>       
 </body>
</html>
o Arquivo PHP da busca
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>
Sistema de Busca</title>
</head>
 <body>
   <?php
      $busca = $_POST["busca"];
      
      include "conexao.inc";
      $resultado = mysqli_query($conexao, "SELECT * FROM livros WHERE pchave LIKE '%$busca%'") or die(mysqli_error($conexao));
      if(!($resultado))
        echo "Desculpe-nos, a sua busca não obteve êxito. Tente efetuá-la com outras palavras-chave.";
      mysqli_close($conexao);
   ?>      
 </body>
</html>
Arquivo inc:
<?php
   $conexao = mysqli_connect("localhost", "root", "phoenixwings");
   mysqli_select_db($conexao, "livraria");
?>

Um print da tabela:

imagemyg.jpg

Editado por PhoenixWings
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
Boa Tarde, PhoenixWings!

Pelo que pude entender de sua consulta, você não está pedindo que te retorne caso o resultado seja true.

Você só diz: Se resultado for diferente faça isso.

Mas é se não for diferente?????

Abraços.

Obrigado pela atenção Endor. Entendi mais ou menos a sua colocação. O que devo escrever se o resultado for true ? também não tenho resultado algum se eu usar uma palavra que não consta na tabela. Eu esperava que aparecesse a mensagem que escrevi no echo sobre a busca solicitada não ter sido encontrada.

Editado por PhoenixWings
Link para o comentário
Compartilhar em outros sites

  • 0

Olá.

Está havendo alguns erros (no meu modo de ver), que precisam ser corrigidos.

Sugiro você efetuar algumas alterações em seu modo de pesquisar:

Divida em partes:

$pesq = "SELECT os campos que você quer. Se for tabela grande e não precisar de todos os campos FROM livros WHERE pchave LIKE '$busca'";

$exe_pesq = mysql_query($pesq);

$qtd_pesq = mysql_num_rows($exe_pesq);

//Aqui a gente conversa com o resultado

IF ($qtd_pesq>=1)

{

$resul_pesq = mysql_fetch_array($exe_pesq);

}

ELSE

{

echo "Desculpe-nos, a sua busca não obteve êxito. Tente efetuá-la com outras palavras-chave.";

}

Detalhe:

Como você vai mostrar os resultados?

Em linhas de tabela ou de outro modo.

Em qualquer um dos casos, precisa efetuar a programação combinado com html.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0
Detalhe:

Como você vai mostrar os resultados?

Em linhas de tabela ou de outro modo.

Em qualquer um dos casos, precisa efetuar a programação combinado com html.

Abraços.

Como eu faço isso Endor? é a primeira vez que eu organizo os resultados oriundos de uma query.

Editado por PhoenixWings
Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia, PhoenixWings!

Uma sugestão é:

PRINT"

<table border=1 width='100%'>

<tr>

<td>Parte 1</td>

<td>Parte 2</td>

<td>Parte 3</td>

<td>Parte 4</td></tr>";

IF ($qtd_pesq>=1)

{

WHILE ($resul_pesq = mysql_fetch_array($exe_pesq))

{PRINT"

<tr>

<td>$resul_pesq [parte1]</td>

<td>$resul_pesq [parte2]</td>

<td>$resul_pesq [parte3]</td>

<td>$resul_pesq [parte4]</td></tr>";

}

}

Note que coloquei parte1 apenas para exemplificar.

Nesses espaços você precisa colocar os títulos da coloca que você quer e,

embaixo onde se repete, você vai usar o nome do campo buscado na pesquisa, que ficará dentro das chaves

respectivas.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde gente. Desculpem-me a demora de uma era para responder. Eu estava enrolado com outras linguagens e algumas disciplinas da faculdade então não tive muito tempo para olhar para esse programa.

Eu resolvi quase todos os meus problemas. Consegui realizar a consulta organizando-a:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Sistema de Busca</title>
</head>
 <body>
   <?php
      $busca = $_POST["busca"];
      
      include "conexao.inc";
      $resultado = mysqli_query($conexao, "SELECT * FROM livros WHERE pchave LIKE '%$busca%'") or die(mysqli_error($conexao));
      
      
         /* como faço para excetuar, individualmente,  palavras-chave que não constam na tabela ? */
          if($busca != mysqli_query($conexao, "SELECT pchave FROM livros WHERE pchave LIKE '%$busca%'")) 
      {  
        echo "Desculpe-nos, a sua busca não obteve êxito. Tente efetuá-la com outras palavras-chave.";
        mysqli_free_result($resultado);
        mysqli_close($conexao);
      }
      else
        while($linha = mysqli_fetch_array($resultado, MYSQLI_ASSOC))
        {
          printf("Título: %s<br>Autor: %s\nEditora: %s<br>Ano de publicacação: %d<br>Quantidade: %d<br>País: %s<br>Palavras-chave: %s          <br>Preço: %.2f<br>Técnico: %s<br>Encarte: %s<br>CDROM: %s<br>Capa dura: %s<br><br>", $linha["titulo"], $linha["autor"], $linha["editora"], $linha["ano_pub"], $linha["quant"],$linha["pais"], $linha["pchave"], $linha["preço"], $linha["tecnico"], $linha["encarte"], $linha["cdrom"], $linha["capadura"]);   
        }
    ?>      
 </body>
</html>

Só que agora eu gostaria de filtrar as palavras-chave. Ex.: Gostaria que para a palavra chave "carro", fosse retornada a frase que eu escrevi no echo do if abaixo de $resultado. Gostaria, se possível, de fazer isso de uma forma elegante, sem outra query. É possível? outra coisa: Supondo que eu tenha as palavras-chave "mistério drama simbologia" se eu buscar por "mistério simbologia" eu não terei resultados mas se eu buscar por "mistério drama" terei. Eu vou ter que usar um explode() para avaliar cada palavra-chave individualmente ? :blink: Obrigado pela Ajuda.

Editado por PhoenixWings
Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite vini_loock! A minha meta agora é fazer com que seja mostrada a frase "sua busca não obteve êxito" (ou algo assim) quando eu utilizar na ferramenta de busca, uma palavra-chave que não consta na tabela "livros" do meu BD. Nela tenho um campo pchave que se refere as palavras-chave que servirão para pesquisar os livros. Espero ter esclarecido o problema.

Editado por PhoenixWings
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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...