Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

Leandro Nigre

Busca por palavra exata

Recommended Posts

Olá pessoal, estou desenvolvendo um sistema de busca em dreamweaver usando php/mysql pela primeira vez e me debati com um pequeno problema. Não consigo fazer o sistema buscar exatamente a palavra que é inserida no formulário. Por exemplo, se digito "ar", ele trará todos os resultados com esta palavra: armadura, arcanjo, arquétipo, etc. Minha Página de busca tem um formulário com método GET, onde o campo para inserir a palvra chama-se search

 

E meu Select na página de resultados está assim:

 

SELECT * FROM tabela WHERE campo LIKE %colname%

 

Sendo que colname é uma variável com valor $_GET['search'] que pega a palavra digitada na página de busca pelo parâmetro de URL. Já tentei usar o sinal = no lugar de LIKE, mas ele não traz nenhum resultado, provavelmente porque no campo eu não tenha somente a palavra "ar", mas a tenha juntamente com outras palavras, no meio de um parágrafo.

 

Alguém pode me dar uma luz?

Share this post


Link to post
Share on other sites

Trocar o LIKe por = não funciona. Ele não traz nenhum resultado, provavelmente porque no campo não haja somente a palavra digitada, mas sim a palvra em meio a um parágrafo.

Share this post


Link to post
Share on other sites

Deu o seguinte erro:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-1' %' at line 1

 

A variável está assim:

 

Name: colname

Type: text

Default valeu: -1

Runtome value: $_GET['search']

Share this post


Link to post
Share on other sites

Está extamente da maneira que você colocou. Se peço para testar dentro do Dreamweaver, ele dá o erro que descrevi acima.

Share this post


Link to post
Share on other sites

Não sei se fiz certo, mas peguei o código que você passou, colei no início da minha página de resultados php e testei a busca. Daí apareceu o echo 'sua consulta está aqui" no início da página, mas a busca não trouxe resultados.

 

Olha coomo está o CODE de minha página de busca.

 

$colname_Recordset1 = "-1";
if (isset($_GET['texto'])) {
  $colname_Recordset1 = $_GET['texto'];
}

mysql_select_db($database_connPMMC, $connPMMC);
$query_Recordset1 = sprintf("SELECT * FROM noticias WHERE texto = %s", GetSQLValueString($colname_Recordset1, "text"));
$Recordset1 = mysql_query($query_Recordset1, $connPMMC) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);

$totalRows_Recordset1 = mysql_num_rows($Recordset1);mysql_free_result($Recordset1);

Share this post


Link to post
Share on other sites

Você deveria substituir "sua consuklta aqui" pela sua consulta...

 

 

Você falou que não queria usar =, mas está usando. Imagem Postada

Não era Like??

$query_Recordset1 = sprintf("SELECT * FROM noticias WHERE texto Like '%% %s %%'", GetSQLValueString($colname_Recordset1, "text"));echo "Consulta: " . $query_Recordset1;$Recordset1 = mysql_query($query_Recordset1, $connPMMC) or die(mysql_error());$row_Recordset1 = mysql_fetch_assoc($Recordset1);

Share this post


Link to post
Share on other sites

Obrigado pela paciência até agora. Troquei o 'sua consulta está aqui' pela minha consulta, ou seja, meu select, e daí apareceu o SELECT impresso na página, mas o problema da busca segue. Fiz certo? Qual o propósito deste echo?

 

Eu usei o na vez anterior = porque estava fazendo testes. Pra mim tanto faz usar = ou LIKE, o importante é que ele traga exatamentea a palvra digitada. Estou usando LIKE agora e aconteceu o seguinte, também. Se não digito nada e submeto o formulário, ele apresenta todos os registros do BD.

Share this post


Link to post
Share on other sites

Já estou ficando constrangido... :ermm:

Fiz como no code que você passou e ficou tudo em branco. Ou seja, não tinha nada depois da palavra Consulta, e nada no resultado, nãi importando a palavra que eu pedisse para buscar... Não sei, não... talvez o problema seja em outro lugar. Vi alguns tutoriais que usam simplesmente campo = variável e dá certo.

Share this post


Link to post
Share on other sites

Acho que fiz certo agora. Pesquisei por salários e obtive o seguinte resultado:

 

 

Consulta: SELECT * FROM noticias WHERE texto Like '% 'salários' %'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'salários' %'' at line 1

 

 

Todavia, como o code do recordset foi gerado pelo dreamweaver, quando o modifiquei ele passou a apresentar um sinal de erro no painel do dreamweaver.

Share this post


Link to post
Share on other sites

WHERE texto Like '% 'salários' %'

 

tire as aspas que estão em vlta de "salário".

Deixe assim:

 

... WHERE texto Like '% salários %'

 

 

Todavia, como o code do recordset foi gerado pelo dreamweaver, quando o modifiquei ele passou a apresentar um sinal de erro no painel do dreamweaver.

Esse é o problema de "programar" usando esses programas...

Share this post


Link to post
Share on other sites

Ué, não sei de veio estas aspas, pois no select que fiz, como você orientou, está assim:

 

SELECT * FROM noticias WHERE texto Like '%% %s %%'

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.