Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Alguem poderia me ajudar a resolver este problema?
Preciso que meu sistema busque qualquer palavra digita.
Ex: Cavalo branco... retornar registros que tenham cavalo e/ou branco
Apenas uma palavra funciona perfeitamente, mas com qualquer palavra na funciona. Virei a noite, revirei o google e nao consegui.
O que cheguei mais perto foi a essa sql:
$lista_clas="SELECT clastitulo, clasdesc FROM tc_anuncio WHERE MATCH (clastitulo, clasdesc) AGAINST ('".$mbusca."')";
Tabela é Myisam e ja criei o indice fulltext mas nao retorna nada na consulta.
Obrigado
deu um explode como o beraldo falou na string no "espaços" então
pegue faça uma repetição for enquanto a variavel for <= ao sizeof da varivel que contem as palavras vindas do explode
similar_text() use afunção similar text.. asim você pode buscar palavras similares... por exemplo cabalo em vez de cavalo...
O unico problema aque acho é a parte das letras maiusculas ou minusculas...
Você pode fazer algo do tipo, apenas deixando dinamic como o Holt disse (utilizando sizeof/count e o explode):
SELECT * FROM noticias WHERE titulo LIKE '%legal%' OR titulo LIKE '%pacas%'
Senhores, agradeço a todos pela disponibilidade e boa vontade.
Seguindo as sugestoes consegui fazer o que eu queria.
Abaixo segue parte relevante do codigo, caso queiram posto o codigo todo.
Gostaria de ressaltar apenas que ainda sou iniciante em php;
Obs.: $npalavra contem o numero de itens no array
$tchaves='1';
if($mcat=="T")
{
foreach ($frase as $chave=>$valor)
{
$mwhere.="tc_anuncio.clastitulo LIKE '%".$valor."%' or tc_anuncio.clasdesc LIKE '%".$valor."%' or tc_categoria.categoriadesc LIKE '%".$valor."%'";
$tchaves++;
if($tchaves<=$npalavra)
{
$mwhere.=" or ";
}
}
//Busca geral
$lista_clas="SELECT * FROM tc_anuncio INNER JOIN tc_categoria ON tc_anuncio.clascat=tc_categoria.categoriaid WHERE ".$mwhere;
}
DÊ explode() na string digitada na busca e use cada índice do vetor retornado para montar as condicionais do WHERE, com AND ou OR, conforme desejar. Dê uma pensada e tente fazer. Não é difícil; é só trabalhar com array.
Poste as dúvidas, se houver