Insites 0 Denunciar post Postado Agosto 12, 2004 Salve galera do imasters!!!Seguinte, tenho a tabela abaixo, deixei só o necessário: `produto` varchar(250) default NULL, `descricao` text, `marca` varchar(50) default NULL, `equipamento` varchar(50) default NULL, `modelo` varchar(50) default NULL, é uma tabela de produtos para um site tipo submarino, estou fazendo a minha consulta da seguinte maneira:SELECT * FROM produtos where (produto like'%$busca%' or descricao like'%$busca%' or marca like'%$busca%' or modelo like'%$busca%' or equipamento like'%$busca%') order by id desc; as variaveis ele está recebendo de um form em php.quando faço uma consulta por apenas um nome tipo HP ou impressora ele retorna os valores beleza, porém quando tento fazer uma consulta com mais de uma palavra não está pegando nada tipo impressora hp a consulta retorna 0, não sei se é problema no meu sql que é basico ou se é no tratamento dos dados de entrada.qualquer ajuda será bem aceita, valeu!!!!!! Compartilhar este post Link para o post Compartilhar em outros sites
leandro_ufrgs 0 Denunciar post Postado Agosto 12, 2004 o que ocorre é que neste caso a tua variavel vai ser "impressora hp" e isto não vai se enquadrar em nenhum caso, certo?? então de repente seria interessante tu separa a variavel, ficar com duas, "impressora" e "hp" e a partir disso fazer uma busca do tipo equipamento = "impressora" AND marca = "hp", assim deve resolver, vai dar trabalho, mas deve resolver.FalowLeandro Compartilhar este post Link para o post Compartilhar em outros sites
Insites 0 Denunciar post Postado Agosto 12, 2004 o que ocorre é que neste caso a tua variavel vai ser "impressora hp" e isto não vai se enquadrar em nenhum caso, certo?? então de repente seria interessante tu separa a variavel, ficar com duas, "impressora" e "hp" e a partir disso fazer uma busca do tipo equipamento = "impressora" AND marca = "hp", assim deve resolver, vai dar trabalho, mas deve resolver.FalowLeandro mas daí se o cara procurar por hp impressora naum vai achar nada, certo??consegui avançar um pouco, se substituir os espaços " " por coringas "%" consigo pegar resultados que esjam em diferentes posições no mesmo campo da tabela, porém com este metodo se eu digitar "impressora hp" e "hp impressora" retorna uma consulta diferente.tmb não consigo pegar em tabelas diferentes como no caso pegar a palavra "impressora" do campo equipamento e o "hp" do campo marca.mas valeu aí pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
Insites 0 Denunciar post Postado Agosto 12, 2004 e ae galera,como estou com o meu projeto atrasado, resolvi fazer no braço mesmo, segue aí abaixo para dar uma olhada e melhorar é claro, pois como estou com pouco tempo fiz na corrida, hehehehe include("conexao.php");$busca=$_POST['busca'];$busca = trim($busca);$busca=$busca." ";$inicio=0;$count=0;//separa as palavras colocando cada uma em uma posição do array consulfor ($i=0; $i<=strlen($busca); $i++) { if ($busca[$i]==" ") { $posicao=$i-1; $variavel=""; for ($x=$inicio; $x<=$posicao; $x++) { $variavel=$variavel.$busca[$x]; } $inicio=$i+1; $consul[$count]=$variavel; $count++; } }// faz um loop e dentro do loop um select com cada palavra jogando o resultado para o proximo select$count=$count-1;for ($i=0; $i<=$count; $i++) { $nome=$consul[$i]; $sql = "SELECT * FROM produtos where "; $sql.="(produto like'%$nome%' or "; $sql.="descricao like'%$nome%' or "; $sql.="marca like'%$nome%' or "; $sql.="equipamento like'%$nome%' or "; $sql.="modelo like'%$nome%')"; if ($i!="0") { if (mysql_num_rows($res)==0){ $i=99999; $sql.=" and id=0"; } else { $sql.=" and ("; for ($x=0; $x<mysql_num_rows($res); $x++) { $sql.="id=".mysql_result($res,$x,"id"); $posicao=mysql_num_rows($res)-1; if ($x==$posicao){ $sql.=")"; } else { $sql.=" or "; } } } } $res = mysql_query($sql,$con); }se alguem aí tiver alguma melhora para esse script, posta aí que analiso com mais tempo, falow!!!!!! Compartilhar este post Link para o post Compartilhar em outros sites