Ir para conteúdo

POWERED BY:

Arquivado

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

celi

[Resolvido] Busca com, e sem acento

Recommended Posts

Outro dia fiz esta pergunta Clique aqui, me ajudaram, porém na hora que busco alguma noticia ele pega tudo que esta cadastrado no bd. Seria possivel buscar somente o que foi digitado exemplo: José ou Jose? Entenderam? Quero fazer busca indiferente do acento repetindo a pessoa digita jose daí o sistema acha José. Seria possível quebrar essa pra mim? Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo:

 

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

Mas num da certo veja como coloquei

<% @Language = VBScript %><%session.LCID=1046%>

<%strBusca = Request.QueryString("busca")

if strBusca <> "" then

stringConexao = "Provider=Microsoft.JET.OLEDB.4.0; Data Source=" & Server.MapPath("celi.mdb")

Set RsConexao = Server.CreateObject("ADODB.Connection")

RsConexao.Open stringConexao

strSQL = "SELECT * FROM Noticias WHERE Titulo LIKE '%"& StrBusca &"%'"

Set RS = RsConexao.Execute(strSQL) %>

<%

function TiraAcento(StrAcento)

for i = 1 to len(StrAcento)

Letra = mid(StrAcento, i, 1)

Select Case Letra

Case "a","á","Á","à","À","ã","Ã","â","Â","â","ä","Ä"

Letra = "A"

Case "e","é","É","ê","Ê","Ë","ë","È","è"

Letra = "E"

Case "i","í","Í","ï","Ï","Ì","ì"

Letra = "I"

Case "o","ó","Ó","ô","Ô","õ","Õ","ö","Ö","ò","Ò"

Letra = "O"

Case "ú","Ú","Ù","ù","ú","û","ü","Ü","Û"

Letra = "U"

Case "ç","Ç"

Letra = "C"

Case "ñ"

Letra = "N"

End Select

texto = texto & Letra

next

TiraAcento = texto

end function

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa passar o texto que quer no StrAcento

Compartilhar este post


Link para o post
Compartilhar em outros sites

por gentileza xanburzum, você poderia me mostrar no código como eu foço isso? Descula-me a minha "lentidão", mas é que estou aprendendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<% @Language = VBScript %><%session.LCID=1046%>

<%StrAcento= Request.QueryString("busca")

if StrAcento<> "" then

stringConexao = "Provider=Microsoft.JET.OLEDB.4.0; Data Source=" & Server.MapPath("celi.mdb")

Set RsConexao = Server.CreateObject("ADODB.Connection")

RsConexao.Open stringConexao

strSQL = "SELECT * FROM Noticias WHERE Titulo LIKE '%"& StrAcento &"%'"

Set RS = RsConexao.Execute(strSQL) %>

<%

 

for i = 1 to len(StrAcento)

Letra = mid(StrAcento, i, 1)

Select Case Letra

Case "a","á","Á","à","À","ã","Ã","â","Â","â","ä","Ä"

Letra = "A"

Case "e","é","É","ê","Ê","Ë","ë","È","è"

Letra = "E"

Case "i","í","Í","ï","Ï","Ì","ì"

Letra = "I"

Case "o","ó","Ó","ô","Ô","õ","Õ","ö","Ö","ò","Ò"

Letra = "O"

Case "ú","Ú","Ù","ù","ú","û","ü","Ü","Û"

Letra = "U"

Case "ç","Ç"

Letra = "C"

Case "ñ"

Letra = "N"

End Select

texto = texto & Letra

next

TiraAcento = texto

 

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

xanburzum, veja bem agora funcionou, mas só tem mais um probleminha o sistema exibe todas as noticias cadastradas no bd. É possível buscar somente o q foi digitado? Tipo: jose ai ele pegase Carlos José nasceu ontem. Atualmente você digita José e o sistema traz: a, b, c, d, e... todas entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, use o operaor LIKE da SQL

 

"SELECT * FROM TABELA WHERE NOME LIKE '%" & variavel & "%'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais já esta deste jeito veja:

strSQL = "SELECT * FROM Titulo WHERE Noticia LIKE '%"& StrBusca &"%'" 

e continua buscando todas as noticias gravadas no bd.

Compartilhar este post


Link para o post
Compartilhar em outros sites

StrBusca não está vazio?

Compartilhar este post


Link para o post
Compartilhar em outros sites

se a variável estiver vindo com valor sim senão pegará tudo mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

De qualquer forma aparece este erro: Microsoft JET Database Engine error '80040e14'

 

Syntax error (missing operator) in query expression 'Noticia LIKE '%%'id'.

 

/2010/noticias/buscar.asp, line 8

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na sua string SQL para ver o que esta sendo passado

 

Verifique a ortografia. pode ser um nome de coluna Invalido 'sua_coluna'. A coluna a qual você se refere na Base de Dados não foi encontrada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

False

Microsoft JET Database Engine error '80040e0c'

 

Command text was not set for the command object.

 

buscar.asp, line 8

Compartilhar este post


Link para o post
Compartilhar em outros sites

o id está boiando ali

 

seria para ordenar por id?

 

se for ponha um ORDER BY

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha agora coloquei assim:

strSQL = "SELECT * FROM Noticias WHERE Noticia LIKE '%"& StrBusca &"%'order by id asc;"
mais ainda busca todas noticias.

Compartilhar este post


Link para o post
Compartilhar em outros sites

me tira uma duvida

 

logo apos esta linha que postou agora ponha exatamente

 

Response.write(strSQL)

Response.end

 

o que aparecer na tela post aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Microsoft VBScript compilation error '800a0401'

 

Expected end of statement

 

buscar.asp, line 7

 

strSQL = "SELECT * FROM Noticias WHERE Noticia LIKE '%"& StrBusca &"%'order by id asc;" Response.write(strSQL)

----------------------------------------------------------------------------------------^

Compartilhar este post


Link para o post
Compartilhar em outros sites

como colocou seu código? pois passou a dar erro que antes não dava e não era para ter acontecido

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.