Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bons dias,Gostaria de saber se alguém me podia ajudar, quero fazer um motor de busca interno num site, onde vá pesquisar por palavras chave em campos de uma tabela de mysql. Até aqui tudo bem se for uma pesquisa simples do género %$palavra%.A coisa complica-se se eu quiser pesquisar por um conjunto palavras independentes, do género "carro seguro" ... eu não quero que apareça só os registos que tenham exactamente "carro seguro", mas sim os que tenham "carro" e "seguro".Eu acho que se pode fazer com a função "explode", mas de facto não estou a conseguir que dê certo, será que alguém me poderia ajudar.Obrigado
Obrigado pela disponibilidade ...
$busca = $_POST["palavras"]; //frase digitada no cmapo busca$array_busca = explode(" ", $busca);$cmd = "select * from Documentos ";for( $i=0; $i < count( $array_busca ); $i++ ) {$Query .= "Titulo LIKE %". $array_busca[$i] ."%"if( $i != count( $array_busca ) - 1 ) { $Query .= " OR " }}//end for
mas dá-me o seguinte erro: Parse error: parse error, unexpected T_IF in /web/sites/vhbu/9/25/57753/public/www/teste/documentos.php on line 34em que a linha 34 é: if( $i != count( $array_busca ) - 1 ) { $Query .= " OR " }ups .... o que poderá ser?
falto o Ponto e virgula, rsrsrsrsrs, dentro do if você tah faznedo assim$Query .= " OR ";falto o ; ali do final, abraços
faltava também um ";" a seguir a '$Query .= "Titulo LIKE %". $array_busca[$i] ."%"' ... eh ehSem querer maçar, mas de facto faz a abertura da tabela, mas não faz a pesquisa, ou seja não respeita a pesquisa só pelas palavras que coloquei.Não falta a função Where neste código?
Sim sim, desculpe, com oestou trbalahando comi algumas cosias, falta sim coloke o where do lado do nome da Tabela, rsrsrsAbraço!
É impressão minha, ou o Enlibra é Português ???Eu acho que ele é de Portugal !!
Desculpem só agora responder, mas estive em reunião ....
De facto sou Português sim ...
Coloquei o seguinte:
$cmd = "select * from Documentos Where ";for( $i=0; $i < count( $array_busca ); $i++ ) {$Query .= "Titulo LIKE %". $array_busca[$i] ."%";if( $i != count( $array_busca ) - 1 ) { $Query .= " OR "; }}//end for
e agora dá-me o seguinte erro: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /web/sites/vhbu/9/25/57753/public/www/teste/documentos.php on line 48
em que a linha 48 é onde faz a contagem das linhas : $tr = mysql_num_rows($todos);
Helllpppp
Você mudou os nomes das variáveis e também dará erro ao tentar concatenar a consulta SQL. Tente assim:
$Query = "select * from Documentos Where ";
for ( $i=0; $i < count( $array_busca ); $i++ ) {
$Query .= "Titulo LIKE %". $array_busca[$i] ."%";
if( $i != count( $array_busca ) - 1 ) {
$Query .= " OR ";
}$sql = mysql_query ($Query);
$total = mysql_num_rows ($sql);Desculpe mas tem certeza que o mysql buscará cada palavra em um mesmo campo ???
SELECT * FROM tabela WHERE campo_a LIKE '%$var1%' OR campo_a LIKE '%$var2%'
eu testei assim eu não apresenta nenhum resultado.
Bom Dia amigo, creio que se você fizer daseuinte forma:$busca = $_POST["frase desejada"] //frase digitada no cmapo busca$array_busca = explode(" ", $busca);$Query = "SELECT * FROM Table WHERE ";for( $i=0; $i < count( $array_busca ); $i++ ) { $Query .= "campo LIKE %". $array_busca[$i] ."%" if( $i != count( $array_busca ) - 1 ) { $Query .= " OR " }}//end for//---------------------------------------------------------------------------------------------//Creio que isso ira funcionar dando erro, é só perguntar,Abraços Felipe