Carcleo 4 Denunciar post Postado Março 7, 2009 Ola pessoal. Estou precisnando de umka forçona de voces: Seguinte.; Tenho 03 tabelas que se envolverão nessa pesquisa. São elas: anunciantes, seguimento e subseguimento. Gostaria de fazer essa pesquisa da seguinte forma. O usuario digitaria num campo de texto um determinada palavra e depois se faria um select nas tres tabelas e faria uma pesquisa por aproximação tipo: O usuario digita la "jg" e no banco tem la na tabela de anunciantes "J.G. Freitas & Cia Ltda" ou digita Belesa e tm la na tabela de Seguimento o seguimento "Beleza" e o select acha. Depois, caso haja retorno das tres TABELAS ou seja, todas as tres tabelas tenha um ou mais campos que satisfgaçam a pesquisa posso depis com php dar o retornmo para que o usuario possa eascolher na opçao quie quiser. Grato por quialquer ajuda?! Uso Mysql 5 e php 5 e o campo das tabelas são : anunciantes ->nome seguimento -> titulo subseguimento-> titulo Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Março 9, 2009 Bom, pessoal eu pensei em alguma coisa assim: Recebo o que o usuario digiotou no campo de pesquisa,. varro o banco de dados e comparo com o que jka existe no banco. caso exista alguma coisa parecisa seleciona. Como fazer isso? Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Março 9, 2009 1 caminho q conheço é usar variaveis; (essa variavel será o conteudo do campo - normalmente 1 textfield num formulário - onde a pessoa digita a palavra a ser pesquisada) a consulta SQL seria algo como: "selecione (campo) onde (where) variavel = (campo a ser pesquisado)" obs: 1 - p/ pesquisa por parte do nome use os operadores % e LIKE 2 - p/ pesquisar em várias tabelas você precisa usar JOIN 3 - p/ pesquisar varios campos use AND no link abaixo tem 1 exemplo usando Dreamweaver e ASP,mas você pode tentar adaptar ao PHP, é só p/ você pegar a lógica: http://forum.imasters.com.br/index.php...t&p=1153826 Compartilhar este post Link para o post Compartilhar em outros sites
Fabio Chupak 0 Denunciar post Postado Março 9, 2009 Isso é uma especie de Guia Comercial que você esta querendo fazer ???? meu msn: meunegocio@meunegocio.com tenho um exemplo... www.guiarondonia.com e www.guiaacre.com.br se por exemplo na tabela Anunciante tiver o campo SEGMENTO e SUBSEGMENTO para ser vinculado da para você utilizar o INNER JOIN (onde listara apenas se for igual) ou LEFT JOIN (listara independemente se tiver vinculado) eu recomento o INNER JOIN para assim evita erros. exemplo. aqui estou fazendo o vinculo de tres tabelas ANUNCIANTES SEGUIMENTO SUBSEGUIMETO SELECT * FROM anunciante INNER JOIN seguimento ON anunciante.id_seguimento = seguimento.id INNER JOIN subseguimento ON anunciante.id_subseguimento = subseguimento.id WHERE anunciante.descricao LIKE %colanuncio% OR seguimento.descricao LIKE %colanuncio2% GROUP BY anunciante.id Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Março 9, 2009 Porem, essas opções que voces me deram é somemte para nomes exatos. Minha duvuda é: Se existir no Bnanco u anbunciante com o nome de J.G Freitas e CIA Ltda. Ai o usuario digita la JG,. de maneira alguma qualquer um,a dessas consultas trará o resultado. O que eu quero é que, na hora em que o usuario digitar JG, seja feita uma pesquisa no banco para saber se existe algum,a nome la que se pareça ou que pelo menos esteje proximo.; Tipo ana e cana JG e J.G. Freitas e CIA ltda.; Existe a função: http://imasters.com.br/artigo/11364/ph..._dizer_com_php/ em php que faz isso.; <?php function voce_quis_dizer($palavra_procurada) { $dicionario = unserialize(file_get_contents('dicionario_serializado.dat')); $minima_distancia = -1; $palavra_procurada = strtolower($palavra_procurada); foreach($dicionario as $palavra_do_dicionario) { if($palavra_procurada == $palavra_do_dicionario) return $palavra; $distancia = levenshtein($palavra_procurada,$palavra_do_dicionario); if($distancia < $minima_distancia || $minima_distancia == -1) { $minima_distancia = $distancia; $sugestao = $palavra_do_dicionario; } } return $sugestao; } ?> Só que eu preferiria que o sql fizesse isso.; Porem, casa não tivesse jeito, teria que conseguir esse arquivo dicionario_serializado.dat'. Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Março 9, 2009 Carcleo, sei q estou sendo chato, mas: Porem, essas opções que voces me deram é somemte para nomes exatos.parece q você n leu c/ atenção meu post anterior: 1 - p/ pesquisa por parte do nome use os operadores % e LIKE (...) no link abaixo tem 1 exemplo usando Dreamweaver e ASP,mas você pode tentar adaptar ao PHP, é só p/ você pegar a lógica: http://forum.imasters.com.br/index.php...p;#entry1153826 mas td bem;n vou insistir mais.. d qqer forma, sucesso p/ você Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Março 10, 2009 O usuario digita la "jg" e no banco tem la na tabela de anunciantes "J.G. Freitas & Cia Ltda" ou digita Belesa e tm la na tabela de Seguimento o seguimento "Beleza" e o select acha. mta vodka pra fazer isso ai hein garotinho... procure por SOUNDEX(), deve te ajudar bastante Compartilhar este post Link para o post Compartilhar em outros sites