Foros del Web » Programando para Internet » ASP Clásico »

Buscador con o sin acentos

Estas en el tema de Buscador con o sin acentos en el foro de ASP Clásico en Foros del Web. Hola, estoy haciendo una pagina y queria agregarle un buscador, lo que hices hasta ahora funciona, pero no logro hacer que me omita los acentos ...
  #1 (permalink)  
Antiguo 15/12/2003, 20:55
 
Fecha de Ingreso: diciembre-2003
Mensajes: 2
Antigüedad: 20 años, 6 meses
Puntos: 0
Buscador con o sin acentos

Hola, estoy haciendo una pagina y queria agregarle un buscador, lo que hices hasta ahora funciona, pero no logro hacer que me omita los acentos es decir... que lo que ponga en el campo del formulario no impotrte si es con o sin acentos

estoy usando Dreamweaver y preacticamente no tengo idea de lo que estoy haciendo... si alguien se apida de mi y me tira alguna pista se los voy a agradecer

Cacho
  #2 (permalink)  
Antiguo 16/12/2003, 10:57
Avatar de jercer  
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 7 meses
Puntos: 13
Que base de datos usas, en SQL Server se puede decir que omita acentos y mayúsculas en las búsquedas, supongo que en otras tambien.
  #3 (permalink)  
Antiguo 16/12/2003, 11:08
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
probá esto:

<%
Function sinAcentos(Str)
Dim CurLtr
For x = 1 To Len(Str)
CurLtr = Mid(Str, x, 1)
Select Case CurLtr
Case "a", "à", "á"
sinAcentos = sinAcentos & "[aàá]"
Case "e", "é", "è"
sinAcentos = sinAcentos & "[eéè]"
Case "i", "ì", "í"
sinAcentos = sinAcentos & "[iìí]"
Case "o", "ò", "ó"
sinAcentos = sinAcentos & "[oòó]"
Case "u", "ù", "ú"
sinAcentos = sinAcentos & "[uùú]"
Case "n", "ñ", "Ñ"
sinAcentos = sinAcentos & "[nñÑ]"
Case Else
sinAcentos = sinAcentos & CurLtr
End Select
Next
End Function
%>



luego al generar la sentencia SQL la llamás donde sea necesario:


<%
palabra = Request("criterio_de_busqueda")

sql = "SELECT * FROM tabla WHERE campo LIKE '%" & sinAcentos(palabra) & "%'"
%>
  #4 (permalink)  
Antiguo 20/12/2003, 21:36
 
Fecha de Ingreso: diciembre-2003
Mensajes: 2
Antigüedad: 20 años, 6 meses
Puntos: 0
muchas gracias dazuaga, me funciona 10 puntos :)
  #5 (permalink)  
Antiguo 21/12/2003, 23:06
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
a mi no, a Víctor Garay... el fue quién pasó el TIP original

saludos
__________________
...___...
  #6 (permalink)  
Antiguo 27/12/2003, 13:37
 
Fecha de Ingreso: marzo-2003
Mensajes: 21
Antigüedad: 21 años, 3 meses
Puntos: 0
Cómo extraer sin acentos de BD

Cómo puedo hacer para que en la consulta a la base de datos el contenido de los campos venga sin acentos?

Es decir, si en la base de datos tengo en un campo la palabra camión cómo puedo hacer para que en la llamada mismo después del WHERE pida el contenido del campo sin acentos, ya que no puedo aplicar la función sinAcentos(campo).

De esta manera podría discriminar completamente los acentos no sólo en el request del formulario. Si alguna persona hace una consulta con la palabra camión y dentro del campo está la palabra camion esta referencia no la va a encontrar.

Gracias.
  #7 (permalink)  
Antiguo 27/12/2003, 13:46
 
Fecha de Ingreso: marzo-2003
Mensajes: 21
Antigüedad: 21 años, 3 meses
Puntos: 0
Soy monra otra vez

Es que, en el mensaje anterior no me he expresado bien. El problema real es cuando alguien introduce la palabra camion, la función sinAcentos no tiene nada que limpiar y en el campo donde buscamos tiene la palabra camión.

Por eso, la pregunta es si en la consulta se puede hacer que camión venga de la base de datos sin acentos.

Gracias.
  #8 (permalink)  
Antiguo 28/12/2003, 16:02
 
Fecha de Ingreso: diciembre-2003
Ubicación: Moroleón, Gto.
Mensajes: 16
Antigüedad: 20 años, 5 meses
Puntos: 0
Bueno Monra, lo que puedes hacer es normalizar ambas cadenas, es decir la que extraes de la bd y la que lees para la busqueda.

Pues utilizar la funcion de dazuaga o esta variante basada en la misma, que lo unico que hace es eliminar acentos, como digo debes aplicarla a ambas cadenas y listo

<%
Function sinAcentos(Str)
Dim CurLtr
For x = 1 To Len(Str)
CurLtr = Mid(Str, x, 1)
Select Case CurLtr
Case "a", "à", "á"
sinAcentos = sinAcentos & "a"
Case "e", "é", "è"
sinAcentos = sinAcentos & "e"
Case "i", "ì", "í"
sinAcentos = sinAcentos & "i"
Case "o", "ò", "ó"
sinAcentos = sinAcentos & "o"
Case "u", "ù", "ú"
sinAcentos = sinAcentos & "u"
Case Else
sinAcentos = sinAcentos & CurLtr
End Select
Next
End Function
%>

Saludos
PD: en el case puedes agregar otros simbolos como ü, etc.
  #9 (permalink)  
Antiguo 29/12/2003, 07:12
 
Fecha de Ingreso: marzo-2003
Mensajes: 21
Antigüedad: 21 años, 3 meses
Puntos: 0
Entonces cómo sería

sql = "SELECT * FROM tabla WHERE sinAcentos(campo) LIKE '%" & sinAcentos(palabra) & "%'"

Así?... así no funciona.
  #10 (permalink)  
Antiguo 29/12/2003, 11:36
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
monra, la funcion que pasé antes sirve para tus necesidades.

Fijate lo que decís:

Cita:
El problema real es cuando alguien introduce la palabra camion, la función sinAcentos no tiene nada que limpiar y en el campo donde buscamos tiene la palabra camión

Si que tiene para limpiar...

camion se transforma, luego de pasarle la funcion, en c[aàá]m[iìí][oòó]n

Última edición por AlZuwaga; 29/12/2003 a las 11:40
  #11 (permalink)  
Antiguo 29/12/2003, 13:02
 
Fecha de Ingreso: marzo-2003
Mensajes: 21
Antigüedad: 21 años, 3 meses
Puntos: 0
Funciona correctamente

No lo había probado porque me parecía similar a otra función que ya tenía.

Muchas gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:24.