Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Edilene

Busca no Banco de dados

Recommended Posts

Boa Tarde, Preciso de algo que busque 2 ou mais palavras separada em 2 campos do banco de dados..Hoje consigo fazer a busca com uma palavra em um campo.Ex: Busca: esteira eletricaA busca tem que achar a palavra esteira e depois eletrica em um campo e depois em outro campo.Será que deu para explicar direito??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso, as duas palavras pode acontecer de estar em um campo e no outro nao.é que na minha busca eu vou procurar no campo nome e descricao.as vezes a palavra ja está no nome e muitas vezes está na descricao.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fazer sistemas de busca eh uma coisa bem chatinha! Porque usar like '%$string%' não funciona, pois se você procurar por "testando 123" e no banco tiver "123 testando" ñão vai achar. O jeito é sair fazendo loop que gera vários 'anagramas' de uma mesma string.

 

Quando a questão de buscar em dois campos diferentes, a solução é mais simples do que parece.. é só usar or (ou)!! Deixando pra la o que eu disse logo acima ficaria Where (Descricao like '%$key%' or Titulo like '%$key%')

 

Espero ter ajudado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

sendo $string a string de busca:$string = strtr($string, " ","%"); //isso vai trocar os espaços em branco pelo curinga.. o q você pode fazer tb eh tentar separar todas as palavras (trocando os espaços por um pedaço da query)...

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu sei...isso vai resolver o problema dos espaços... tipo, se abd e def estiverem separados por um espaço ou naum...o q ela pode fazer eh uma função q aumente a query (colocando "OR campo LIKE '$palavra"), onde $palavra eh uma variável com o primeiro intervalo entre espaços " "...

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom...

anagrama?

 

se o cara procurar por polvilho e no banco tiver ohplvoil, ele retornara... entao nao eh anagrama....

Perfeito.

Exatamente por isso que eu coloque 'anagrama', entre aspas simples.

Foi apenas uma analogia, querendo dizer que a solução não funcionaria caso as ordens das palavras na string seja diferente da original.

 

Em relação ao uso do explode pra quebrar a string e gerar vários 'OR', essa aparentemente é a solu~ção mais acessível... mas a perfomance ficaria muito ruim caso a quantidade de dados e o numero de palavras na string for alto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.