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

Busca Exata Separando Por Virgula


foxbh

Pergunta

Pessoal , to tentando faser um sistema de busca exata separando as palavras por ( , ) tentei fase isso em ASP, so que os resultados não me agradarão porque se eu procurar por moveis e no banco de dados na coluna de palavras chave tiver moveis em uma linha e imoveis na outra ele num consegue diferencia as duas e me mostra que encontrou as dois resultados, agora vo tenta fase em PHP como ficaria esta busca, sera que teria condições de faser esta busaca me retornar o resultado exato na coluna de palavras chaves separando por ,

o comando de busca e este

"SELECT * FROM busca WHERE chaves = '$chave";

Sera que se eu fiser um explode na coluna chaves, como eu vou consegir realizar a busca depois ? blink.gif

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

O ideal é que você faça um tratamento na string de busca. Pelo o que eu entendi, você tem um campo no banco de dados que é somente de palavras-chave, certo? Aí você quebra a string de entrada onde tiver uma "," e cria a cláusula WHERE conforme o número de palavras que a pessoa digitar:

"SELECT * FROM busca WHERE (chaves LIKE '%$palavra1%') OR (chaves LIKE '%$palavra2%')"

Entendeu? Pra cada palavra além da primeira, você vai acrescentar um "OR (chaves LIKE '%$palavra%')".

Falou!

Link para o comentário
Compartilhar em outros sites

  • 0

Entendi, mais o que eu to querendo e alguma coisa mais ou menos assim,

user posted image

Tenho esta tabela no bd ai e realizada a busca por bones o resultado vai ser, sua pesquisa retornou 1 resultado , logo abaixo vem o nome da loja loja de roupas so que se eu uzar o codigo do preceptor usando like '%$chave%' "; quando eu digito a palavhra moveis o resultado e sua pesquisa retornou 2 resultados e me lista o nome da duas lojas loja de imoveis e imobiliaria porque quando agente utiliza o sinal de % a busca fica por aproximação correto, este e o mesmo problema que eu tinha no ASP, a minha intensão e faser esta busca o mais fiel possivel, se eu digitar moveis ela me retorne apenas o nome correspondente a palavra chave que exista no BD.....

unsure.gif acho que agora consegui explica direito,

Valeu galera

Link para o comentário
Compartilhar em outros sites

  • 0

Então neste caso acho que você teria que usar expressões regulares... por exemplo:

A palavra "móveis" vai ter em suas extremidades um espaço (" ") ou uma vírgula, certo? Diferentemente da palavra "móveis" em "imóveis".

você poderia criar a cláusula where assim:

"WHERE chaves REGEXP '\b".$chave."\b'"

Tenta assim... acho que daria certo. Se não der, tenta assim:

"WHERE chaves REGEXP '(^|[ ,])" . $chave . "([ ,]|$)'"

Falou!

Link para o comentário
Compartilhar em outros sites

  • 0
Valeu Illidan a segunda opção funciono direitinho, e por isso que eu to começando a gosta do PHP , mesmo sem entende muita coisa, ele te da muito mais opção , num te deixa travado em certas coisas !!!! biggrin.gif

Não tem de que... smile.gif

Mas isso não é exclusividade do PHP... expressões regulares existem em muitas linguagens... até em javascript, que é client-side. Vale a pena você dar uma estudada nelas... ajudam muito. wink.gif

Abraços!

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