Ir para conteúdo

POWERED BY:

Arquivado

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

Insites

Sistema de produtos

Recommended Posts

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

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

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

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

×

Informação importante

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