Ir para conteúdo

POWERED BY:

Arquivado

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

Naty_Za

Sistema de busca em mais de 1 campo

Recommended Posts

Pessoal, tenho um sistema de busca simples, que faz uma busca na tabela "cadastros" no meu BD

 

então a tabela está estruturada assim:

 

id

titulo

servico

endereco

tel

cidade

estado

email

http

 

Então, essa tabela são cadastrados de empresas!

 

E as empresas estão cadastradas de acordo com o serviço que fazem:

 

ex:

 

C&C Material Construção - Loja Virtual

Argamassa

Av. Maria Luiza Pompeu de Camargo, 333

Campinas / SP

Tel: (19) 4001-0100

Email: sac@cec.com.br / televendas@cec.com.br

 

C&C Material Construção - Loja Virtual

Tubo, Conexão

Av. Maria Luiza Pompeu de Camargo, 333

Campinas / SP

Tel: (19) 4001-0100

Email: sac@cec.com.br / televendas@cec.com.br

 

C&C Material Construção - Loja Virtual

Antena

Av. Maria Luiza Pompeu de Camargo, 333

Campinas / SP

Tel: (19) 4001-0100

Email: sac@cec.com.br / televendas@cec.com.br

 

A única coisa q muda é o serviço.. então, se a pessoa busca "C&C", vai achar todos os cadastrados, de todas as categorias...

 

E se a pessoa busca "Antena" vai achar esse cadastro da C&C, assim como de outras empresas q tb oferecem esse serviço..

 

Mas se a pessoa procurar "C&C antena" daí ele volta 0.. ele ñ busca em 2 campos.. mesmo q tenha esse registro, ele ñ procura assim..

 

E eu gostaria de mudar isso.. pq ficaria muito mais fácil pra pesquisar.... mas como vou fazer pra ele reconhecer todas as palavras que forem digitadas no campo, como palavras soltas, e buscar 1 a 1 em cada campo??????

 

Me ajudem por favor!!!!

 

vou postar meu código para verem:

 

<? if(!empty($HTTP_POST_VARS[palavra])) { 	$palavra = str_replace(" ", "%", $HTTP_POST_VARS[palavra]); // Altera os espaços adicionando no lugar o simbolo % 	$qr = "SELECT * FROM cadastros WHERE titulo LIKE '%".$palavra."%' OR cidade LIKE '%".$palavra."%' OR servicos LIKE '%".$palavra."%' OR estado LIKE '%".$palavra."%' OR palavras LIKE '%".$palavra."%' ORDER BY titulo ASC"; // definimos para buscar no campo1 e ordenar pelo campo que você quiser.	$sql = mysql_query($qr) or die (mysql_error()); // Executa a query no Banco de Dados 	$total = mysql_num_rows($sql); // Conta o total ded resultados encontrados 	echo "<font face=Verdana, Arial, Helvetica, sans-serif><font size=1>Sua busca retornou <b>$total</b> resultados.</font><br><br>\n"; // mostra quantos resultados retornou e logo depois exibe	while ($dados = mysql_fetch_array($sql)) {$campo1 = $dados["titulo"];$campo2 = $dados["endereco"];$campo3 = $dados["cidade"];$campo4 = $dados["tel"];$campo5 = $dados["id"];$campo6 = $dados["http"];$campo7 = $dados["email"];$campo8 = $dados["estado"];$campo9 = $dados["servicos"];if ($campo6 != ""){$varHref = "<a href=\"http://$campo6\" target=\"_blank\" ><b>$campo1</b></a>";}else{$varHref = $campo1;}		   echo "<font color=#00496e><b>".$varHref."</b></font><br><i>$campo9 </i><BR>$campo2<BR>$campo3 / $campo8 <br>Tel: $campo4<BR>Email: <a href=mailto:$campo7>$campo7</a><BR><BR>";} } ?>

Valewww pessoal!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode tentar isso:

 

no lugar de

PHP
$palavra = str_replace(" ", "%", $HTTP_POST_VARS[palavra]); // Altera os espaços adicionando no lugar o simbolo %

   

$qr = "SELECT * FROM cadastros WHERE titulo LIKE '%".$palavra."%' OR cidade LIKE '%".$palavra."%' OR servicos LIKE '%".$palavra."%' OR estado LIKE '%".$palavra."%' OR palavras LIKE '%".$palavra."%' ORDER BY titulo ASC"; // definimos para buscar no campo1 e ordenar pelo campo que você quiser.

 

Você coloca isso:

PHP
$palavras = explode(' ', $HTTP_POST_VARS['palavra']); //separa as palavras e as coloca em um array

 

$qr = "SELECT * FROM cadastros WHERE";

 

//adiciona o trecho SQL para cada palavra

foreach($palavras as $palavra){

$qr .= "(titulo LIKE '%".$palavra."%' OR cidade LIKE '%".$palavra."%' OR servicos LIKE '%".$palavra."%' OR estado LIKE '%".$palavra."%' OR palavras LIKE '%".$palavra."%') AND ";

}

 

//o "1 = 1" é necessário, para não conflitar com o último AND

$qr .= "1 = 1 ORDER BY titulo ASC";

 

bom, eu não testei aqui, vê se funciona.

 

Boa Sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara só uma coisa você repete as informações do endereço, nome, etc.. todas as vezes ou tem uma tabela para os serviçosse não tiver uma tablea para serviço sugiro que crie pois dessa forma seu banco fica com muita informação redundanteimagina se um dia o telefone da C&C mudevocê fará varios updates?sugiro ainda que pesquise sobre relacionamento entre tabelasabraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi programador!!

 

é verdade!!!! concordo com o q disse!! vou pesquisar mais a esse respeito.. 1 único cadastro da empresa e linkado a ele, todos os serviços da empresa........

 

Valeu pela dica!!

 

E Neto, valewww!!! brigadão mesmo!!

Deu certinho!!!!!!!!!!!!!!!!!!!!!

 

;) :P :D :lol: B) :rolleyes: http://forum.imasters.com.br/public/style_emoticons/default/clap.gif :) http://forum.imasters.com.br/public/style_emoticons/default/grin.gif http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif http://forum.imasters.com.br/public/style_emoticons/default/yes.gif

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.