Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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?

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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']

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros 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);

Compartilhar este post


Link para o post
Compartilhar em outros 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);

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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...

Compartilhar este post


Link para o post
Compartilhar em outros 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 %%'

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.