Naty_Za 0 Denunciar post Postado Outubro 26, 2007 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
_neto_ 0 Denunciar post Postado Outubro 26, 2007 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
programador php 0 Denunciar post Postado Outubro 26, 2007 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
Naty_Za 0 Denunciar post Postado Outubro 26, 2007 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
_neto_ 0 Denunciar post Postado Outubro 26, 2007 de nada http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites