..:: MX Studio Fóruns ::..: Busca por palavras - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Busca por palavras Busca por qualquer palavra

#1 User is offline   CRSramone 

  • Group: Membros
  • Posts: 88
  • Joined: 12-July 05

Posted 20 July 2005 - 05:30 PM

Pessoal, to tentando fazer uma busca no meu sistema de estoque, mas tenho um problema, se eu quero buscar por "Broca de Centro" eu tenho que digitar exatamente "Broca de Centro" ao invez de somente digitar "broca centro".

Bem ai vai o código:

ColdFusion

<cfquery datasource="data" name="busca">
SELECT *
FROM estoque_cadastro
Where #form.criteria# LIKE '%#Form.busca#%'
Order by #form.criteria#
</cfquery>


O BD é em Mysql.

Valeu
0

#2 User is offline   pcsilva 

  • Group: Moderadores
  • Posts: 1940
  • Joined: 23-January 05

Posted 20 July 2005 - 06:33 PM

Dê uma olhada neste tópico
http://forum.mxstudio.com.br/index.php?sho...798&#entry68798
0

#3 User is offline   CRSramone 

  • Group: Membros
  • Posts: 88
  • Joined: 12-July 05

Posted 20 July 2005 - 06:46 PM

QUOTE(pcsilva @ 20/7/2005 17:07:09)


Já fiz isso ai Pedrão, e mesmo assim não funcionou, eu continuo tendo que usar a frase correta.
0

#4 User is offline   CRSramone 

  • Group: Membros
  • Posts: 88
  • Joined: 12-July 05

Posted 20 July 2005 - 07:12 PM

To colocando o código um pouco mais detalhado ai pra ver se vc acha o defeito.

ColdFusion

<cfquery datasource="data" name="verify">
SELECT *
FROM estoque_cadastro
WHERE #form.criteria# Like '%#(Form.busca)#%'
</cfquery>

<CFIF verify.RecordCount IS '0'>
<div align="center"><span class="style1 style1">Nada foi encontrado para <cfoutput>#form.busca#</cfoutput></span><cfoutput><span class="style1">.</span></cfoutput><br>
<br>
<a href=javascript:history.back(-1)>Nova Busca<br>
</a><img src="../imagens/assinatura_mc.gif" width="340" height="57">
</div>

<CFELSE>
<!--- retiro espaços desnecessários --->
<cfset lista=Trim(form.busca) >
<!--- troco todos os espaços dentro da frase por virgula --->
<cfset lista=Replace(lista," ",",","All") >
<!--- executo consulta --->
<CFQUERY DATASOURCE="data" NAME="busca">
SELECT * FROM estoque_cadastro WHERE 0=0
<!--- inicio loop em uma lista o parametro default para o atributo delimiter é a virgula --->
<cfloop index = "elem" list = "#lista#">
<cfif Len(elem) GT 1>
<!--- acrescento um filtro para cada item da lista ou seja acrescento um filtro para cada palavra da frase --->
AND #form.criteria# LIKE '%#elem#%'
</cfif>
</cfloop>
</cfquery>

<cfoutput query="busca">
#dados#
</cfoutput>
</cfif>

0

#5 User is offline   CRSramone 

  • Group: Membros
  • Posts: 88
  • Joined: 12-July 05

Posted 20 July 2005 - 07:15 PM

Cara, acabei de descobrir, bem eu tava fazendo uma verificação antes de colocar o resultado, para no caso de negativo avisasse o usuario que o item não existia.
Para isso eu estava usando o CFIF e CFELSE, assim como vc usou no seu código, só que um dentro do outro, por isso tava dando erro, tirei minha verificação e resolveu o problema.

Mas agora te pergunto, de que outra forma posso verificar?
0

#6 User is offline   pcsilva 

  • Group: Moderadores
  • Posts: 1940
  • Joined: 23-January 05

Posted 20 July 2005 - 07:20 PM

experimenta assim

ColdFusion

<cfset lista=Replace(Trim(url.busca) ," ",",","All") >

<CFQUERY DATASOURCE="dsn" NAME="seu_bd">

SELECT seus_campos FROM sua_tabela WHERE 0=0

<cfloop index = "elem" list = "#lista#">

<cfif Len(elem) GT 1>

AND UCASE(seu_campo) LIKE '%#UCase(elem)#%'

</cfif>

</cfloop>

</cfquery>



Um ucase é do mysql e o outro é do cf
0

#7 User is offline   CRSramone 

  • Group: Membros
  • Posts: 88
  • Joined: 12-July 05

Posted 20 July 2005 - 07:24 PM

Opa Opa Opa...vo comemora...huahuaha

Resolvi aqui cara, veja só era bem simples:

Coloquei a Query (seu código) antes da verificação, e usei a mesma query para fazer a verificação, será que deu pra entender???

Vai ai o código para servir de exemplo pra galera:

ColdFusion

<cfinclude template="../template/aparencia/aparencia.cfm">
<cfinclude template="../template/query/java_bloqueio.js">
<!--- retiro espaços desnecessários --->
<cfset lista=Trim(form.busca) >
<!--- troco todos os espaços dentro da frase por virgula --->
<cfset lista=Replace(lista," ",",","All") >
<!--- executo consulta --->
<CFQUERY DATASOURCE="data" NAME="busca">
SELECT * FROM estoque_cadastro WHERE 0=0
<!--- inicio loop em uma lista o parametro default para o atributo delimiter é a virgula --->
<cfloop index = "elem" list = "#lista#">
<cfif Len(elem) GT 1>
<!--- acrescento um filtro para cada item da lista ou seja acrescento um filtro para cada palavra da frase --->
AND #form.criteria# LIKE '%#elem#%'
</cfif>
</cfloop>
</cfquery>

<CFIF busca.RecordCount IS '0'>
<div align="center"><span class="style1 style1">Nada foi encontrado para <font color="FF0000"><cfoutput>#form.busca#</cfoutput></font></span><cfoutput><span class="style1">.</span></cfoutput><br>
<br>
<a href=javascript:history.back(-1)>Nova Busca<br>
</a><img src="../imagens/assinatura_mc.gif" width="340" height="57">
</div>
<CFELSE>
<cfoutput query="busca">
#dados#
</cfoutput>
</cfif>


Espero ter ajudado.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




2 User(s) are reading this topic
0 membro(s), 2 visitante(s) e 0 membros anônimo(s)