Ir para conteúdo

POWERED BY:

Arquivado

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

celi

[Resolvido] Buscar com ou sem acento

Recommended Posts

Boa noite! Gostaria de saber como faço para buscar com e sem acento? Tipo se eu digitar: Antônio ou Antonio o sistema busacar normalmente. Ajudem por favor! Abaixo segue o código.

 

<%session.LCID=1046%>
<%strBuscar = Request.QueryString("buscar")
if strBuscar <> "" then
stringConexao = "Provider=Microsoft.JET.OLEDB.4.0; Data Source=" & Server.MapPath("db/db.mdb")
Set RsConexao = Server.CreateObject("ADODB.Connection")
RsConexao.Open stringConexao
strSQL = "SELECT * FROM Noticias WHERE Noticia LIKE '%"& strBuscra &"%'"
Set RS = RsConexao.Execute(strSQL) %>
<title>Buscar Notícias</title><body bgcolor="white" leftmargin="0" marginwidth="0" topmargin="0" marginheight="0">
<font face="Arial"><span style="font-size:10pt;">
<%While not RS.EOF
response.write "" & RS("classes") & "<BR>"
response.write ("<a href=""ir.asp?not=" & RS("ID") & "&classse=" 	& RS("classes1") & """>" & RS(topico") & "</a>") & "<BR><BR>"
RS.MoveNext
Wend
end if
 %>

Desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

uma busca no fórum talvez ajude...

 

dá uma olhada nesse tópico aqui no próprio imasters,

 

http://forum.imasters.com.br/index.php?/topic/311332-busca-sem-diferenciar-acento/page__view__findpost__p__1150834

 

ve se é mais ou menos isso que precisa!!

se não for poste que tentaremos te ajudar!

 

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo

 

busca=split(request("palavra"),chr(32))
dim onde
for x = 0 to Ubound(busca)
  if x > 0 then
     onde=onde + " and "
  end if
  pesq=busca(x)
  pesq = UCASE(pesq) 'Converte para maiúsculas
  pesq = replace(pesq,"a","[a,á,à,ã,â,ä,A]")
  pesq = replace(pesq,"e","[e,é,è,ê,ë,E]")
  pesq = replace(pesq,"i","[i,í,ì,î,ï,I]")
  pesq = replace(pesq,"o","[o,ó,ò,õ,ô,ö,O]")
  pesq = replace(pesq,"u","[u,ú,ù,û,ü,U]")
  pesq = replace(pesq,"c","[c,ç]")
  onde=onde+"UCASE(texto) like '%" & pesq & "%'"
next

sql = "select * from texto where " & onde

 

Ele pega os dados que recebeu via request.form (ou querystring) e procura pelo espaço (chr(32)), armazenando cada um no array busca

 

busca=split(request("palavra"),chr(32))

Faz um loop para percorrer todos os elementos do array busca

 

for x = 0 to Ubound(busca)

Converte para maiúsculas (para que não haja diferença entre maiúscular e minúsculas) e dá um replace nos acentos

 

pesq = UCASE(pesq) 'Converte para maiúsculas
  pesq = replace(pesq,"a","[a,á,à,ã,â,ä,A]")
  pesq = replace(pesq,"e","[e,é,è,ê,ë,E]")
  pesq = replace(pesq,"i","[i,í,ì,î,ï,I]")
  pesq = replace(pesq,"o","[o,ó,ò,õ,ô,ö,O]")
  pesq = replace(pesq,"u","[u,ú,ù,û,ü,U]")
  pesq = replace(pesq,"c","[c,ç]")

Monta a próxima instrução SQL

onde=onde+"UCASE(texto) like '%" & pesq & "%'"

Continua o loop e depois faz a busca com as instruções que foram geradas

 

next

sql = "select * from texto where " & onde

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpem a minha "burrice", mas como insiro estes códigos em meu sisteminha? Já achei algumas vezes, mas não consegui adaptar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

segue como expliquei acima, ou usa esta assim:

 

palavra="sua palavra âöùei"
CAcento = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ" 
        SAcento = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN" 
        Texto = "" 
        if Palavra <> "" then 
        For X = 1 to Len(Palavra) 
        Letra = mid(Palavra,X,1) 
        Pos_Acento = inStr(CAcento,Letra) 
        if Pos_Acento > 0 then 
        Letra = mid(SAcento,Pos_Acento,1) 
        end if 
        Texto = Texto & Letra 
        next 
        TiraAcento = Texto 
        end if 
		response.write(tiraacento)

Compartilhar este post


Link para o post
Compartilhar em outros sites

celi,

 

sugiro que qualquer um dos exemplos acima que for utilizar, utilize como função para otimizar seu código..

 

ou seja, crie um arquivo tipo funcoes.asp (faça um include dele dentro de sua página que irá utilizar) e chame a função quando necessitar dela..

 

Por exemplo criar lá

 

function otimizaBusca (suavariavel)
   CAcento = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ" 
   SAcento = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN" 
   Texto = "" 
   if Palavra <> "" then 
   For X = 1 to Len(Palavra) 
   Letra = mid(Palavra,X,1) 
   Pos_Acento = inStr(CAcento,Letra) 
   if Pos_Acento > 0 then 
   Letra = mid(SAcento,Pos_Acento,1) 
   end if 
   Texto = Texto & Letra 
   next 
   TiraAcento = Texto 
   end if 
   otimizaBusca = tiraacento
end Fuction

 

 

daí dentro do seu código você pode utilizar assim

 

suavariavel = otimizaBusca(suavariavel)

 

espero ter ajudado ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usá-la como no poste #5 ou chamando a função como citado no post #2

Compartilhar este post


Link para o post
Compartilhar em outros sites

sinto muito, mas já coloquei de diversas formas mas deu oseguinte erro:

 

Microsoft VBScript compilation error '800a0400'

 

Expected statement

 

/2010/buscar.asp, line 3

 

<%palavra="sua palavra âöùei"CAcento = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ" SAcento = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN" Texto = "" if Palavra <> "" then For X = 1 to Len(Palavra) Letra = mid(Palavra,X,1) Pos_Acento = inStr(CAcento,Letra) if Pos_Acento > 0 then Letra = mid(SAcento,Pos_Acento,1) end if Texto = Texto & Letra next TiraAcento = Texto end if response.write(tiraacento)

^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isto é geralmente devido à utilização de uma instrução With em um servidor com uma versão anterior do motor de script.

 

usa assim...

 

function busca(seu texto)
   CAcento = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ" 
   SAcento = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN" 
   Texto = "" 
   if Palavra <> "" then 
   For X = 1 to Len(Palavra) 
   Letra = mid(Palavra,X,1) 
   Pos_Acento = inStr(CAcento,Letra) 
   if Pos_Acento > 0 then 
   Letra = mid(SAcento,Pos_Acento,1) 
   end if 
   Texto = Texto & Letra 
   next 
   TiraAcento = Texto 
   end if 
   Busca = tiraacento
end Fuction

 

 

daí dentro do seu código você pode utilizar assim

 

seu texto = Busca(seu texto)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O xanburzum, deixa eu te perguntar uma coisa. Tenho qeu inserir este código onde fica meu formulário ou na busca?

Compartilhar este post


Link para o post
Compartilhar em outros sites

recupere o strBuscar = Request.QueryString("buscar")

e cloque na função antes de passá-lo na SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria desse jeito?

<% @Language = VBScript %><%session.LCID=1046%>
<%srBuscar = Request.QueryString("buscar")
function busca(seu texto)
CAcento = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ"
SAcento = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN"
Texto = ""
if Palavra <> "" then
For X = 1 to Len(Palavra)
Letra = mid(Palavra,X,1)
Pos_Acento = inStr(CAcento,Letra)
if Pos_Acento > 0 then
Letra = mid(SAcento,Pos_Acento,1)
end if
Texto = Texto & Letra
next
TiraAcento = Texto
end if
if strBusca <> "" then
stringConexao = "Provider=Microsoft.JET.OLEDB.4.0; Data Source=" & Server.MapPath("db.mdb")
Set RsConexao = Server.CreateObject("ADODB.Connection")
RsConexao.Open stringConexao
Busca = tiraacentoend Fuction
strSQL = "SELECT * FROM Noticias WHERE Noticia LIKE '%"& strBusca &"%'"
Set RS = RsConexao.Execute(strSQL) %>
<body bgcolor="white" leftmargin="0" marginwidth="0" topmargin="0" marginheight="0">
<font face="Arial"><span style="font-size:10pt;">
<%While not RS.EOF
response.write "" & RS("Cl") & "<BR>"
response.write ("<a href=""ver.asp?News=" & RS("ID") & "&cl=" 	& RS("Cl2") & """>" & RS("Topico") & "</a>") & "<BR><BR>"
RS.MoveNext
Wend
end if
 %>
</span></font>
Se for aida da erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites
strSQL = "SELECT * FROM Noticias WHERE Noticia LIKE '%"& TiraAcento &"%'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza...

qualquer coisa posta ae....

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.