spiderx 0 Denunciar post Postado Maio 2, 2005 A questão é a seguinte, utilizando a sintaxe: $SQL = "SELECT * FROM artigos WHERE titulo LIKE '%$string%'";ele efetua a busca e me retorna os registros onde contem a a string em qualquer posição do registro, ex: se eu tenho no registro: "Papa faz aparição pública." e o usuário faz a busca pela palavra "papa" ele me retorna o registro, mas se o usuário buscar por "papa aparição" ele não me retorna nada(lógico), não existe a sequencia a ser pesquisada, até ai tudo bem, o script utilizando este select funciona mas não me atende, queria que ele efetuasse a busca e me retornasse o registro, pois as duas palavras existem no registro. Continuei pesquisando e encontrei este código em um fórum(não me recordo onde, desculpe o autor do código): $p = explode(" ", $string);for($i=0; $i<count($p); $i++){$resultado = mysql_query("SELECT autor FROM artigos WHERE autor LIKE '%$p[$i]%'"); while($reg = mysql_fetch_row($resultado)) $msg_final .= $reg[0]."<br>";}funciona quase que 100%, o problema é que se eu efetuar a busca utilizando o exemplo acima, ele me retorna o resultado correto, mas imprime duas vezes, pois existem as duas palavras no registro. Como solucionar o problema para efetuar a busca em um campo da tabela, mas tratando o fato do usuário estar digitando conjuntos de palavras para a busca? Obrigado!!! Compartilhar este post Link para o post Compartilhar em outros sites
walace 1 Denunciar post Postado Maio 2, 2005 Uma forma rápida que vejo aqui eh jogando as palavras em um vetor e fazendo esta busca usando o OR/AND junto com o LIKE.Por exemplo, o usuario digita papa+teste, você separa (explode) isso em uma variável, daí faz um loop para montar sua string de sql.Vê se conseguiu captar o que falei, qualquer coisa posta novamente. Compartilhar este post Link para o post Compartilhar em outros sites
nerdao 0 Denunciar post Postado Maio 2, 2005 axu que não entendi muito bem ! quando voce usa o like assim LIKE '%$string%'"; Você busca por toda a palavra !" Mas se voce colocar apenas um coringa (%) so ele so busca pela palavra completa testa e coloca assim ! $SQL = "SELECT * FROM artigos WHERE titulo LIKE '%$string'"; ATT :KADU http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
spiderx 0 Denunciar post Postado Maio 2, 2005 Sim consegui captar o que disse, mas se reparar o segundo code postado, ele faz exatamente isso , o problema é o seguinte, ao fazer isso ele me retorna dois resultados de mesmo valor. repetindo o exemplo:Existem vários registros, no banco de dados , onde entre eles um contem a fraze:"Faz um mês que o papa foi escolhido"Se efetuar a busca por "papa escolhido"(sem aspas) ele me retorna dois resultados de busca, mostrando o mesmo registro 2 vezes. Compartilhar este post Link para o post Compartilhar em outros sites
spiderx 0 Denunciar post Postado Maio 2, 2005 Nerdão, conto respeito:Ex registro: "Papa faz aparição pública."Busca por: papa pública, a variável string recebe a sequencia "papa pública", entao ele procura pela fraze pela sequencia exata à contida na string. funciona como se "papa pública" fosse uma palavra.O segundo código faz 90% do trabalho, mas me repete os registros, ao efetuar a busca por mais de uma palavra contida no registro. Compartilhar este post Link para o post Compartilhar em outros sites
Wilker 3 Denunciar post Postado Maio 3, 2005 na hora de faze a busca você vai faze assim: PHP [*]<?php [*]$buscar = "Papa publica"; //isso eh um exemplo, você puxa a variavel a ser buscada de onde você quizer [*]$busca = trim($busca); //para cancelar os espacos extras no inicio e fim da string [*]$strings = explode(" ", $busca); //separando as palavras a serem buscadas [*]$buscar = ""; //nova variavel em branco [*] [*]while($row = each($strings)) { [*] $buscar .= "titulo LIKE '%{$row[1]}%' and "; //criando os likes [*]} [*] [*]$buscar = substr($buscar, 0, -5); //remover o ultimo and [*] [*]$query = mysql_query("select * from artigos where {$buscar}"); [*] [*]?> acho q isso resolve seu problema ;) Compartilhar este post Link para o post Compartilhar em outros sites