Foros del Web » Programando para Internet » PHP »

Comparar eñes y tildes en consulta SQL

Estas en el tema de Comparar eñes y tildes en consulta SQL en el foro de PHP en Foros del Web. Hola. Como se puede realizar una consulta SQL para que saque los tildes y reemplace las eñes con enes. Código PHP: $nombreAnimal  =  $_POST [ ...
  #1 (permalink)  
Antiguo 26/08/2015, 13:15
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 14 años
Puntos: 3
Comparar eñes y tildes en consulta SQL

Hola. Como se puede realizar una consulta SQL para que saque los tildes y reemplace las eñes con enes.

Código PHP:

$nombreAnimal 
$_POST["animal"];

select from Zoo
where nombreAnimal
quitarCaracterEspecial($nombreAnimal
Por ejemplo tengo una función que me quita las eñes y tildes del parámetro que recibo desde un formulario, pero si el campo nombre animal lo dejo de esta forma:

No reemplaza los caracteres especiales en el campo de la tabla ZOO que esta dentro de la función quitarCaracterEspecial
Código PHP:

$nombreAnimal 
$_POST["animal"];

select from Zoo
where quitarCaracterEspecial
(nombreAnimal)= quitarCaracterEspecial($nombreAnimal
Por ejemplo si el animal buscado es ñandú, la consulta debería comparar nandu=nandu o si es león , debería ser leon=leon
una ayuda
Gracias
  #2 (permalink)  
Antiguo 26/08/2015, 14:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 10 meses
Puntos: 2534
Respuesta: Comparar eñes y tildes en consulta SQL

Creo que el problema es que ya guardaste los datos con tildes, de modo que no puede aplicar la misma función desde PHP para comparar.

A ese concepto de quitar acentos, tildes, etc. se le conoce como normalización.

Dicho proceso debiste aplicarlo al momento de guardar los datos, para que al momento de hacer la consulta no tengas que procesar de nuevo, salvo el valor de entrada que busques.

Primero normaliza tus datos y verás que todo se solucionará.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/08/2015, 14:15
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 14 años
Puntos: 3
Respuesta: Comparar eñes y tildes en consulta SQL

Gracias por responder. El único problema que es un sitio web que yo no diseñe y me lo entregaron para mejorarlo, pero son cerca de 50000 registros que no están normalizados, por lo tanto, en la tabla se encuentran datos con eñes y tildes.

Existe alguna solución que me permita sacar los caracteres especiales al momento de realizar la consulta?
  #4 (permalink)  
Antiguo 26/08/2015, 14:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 10 meses
Puntos: 2534
Respuesta: Comparar eñes y tildes en consulta SQL

Cita:
Iniciado por -thor- Ver Mensaje
Existe alguna solución que me permita sacar los caracteres especiales al momento de realizar la consulta?
De eso no tengo idea, creo que es un tema de SQL aparte, al menos con PHP no podrás conseguir lo mismo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 26/08/2015, 14:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 2 meses
Puntos: 2654
Respuesta: Comparar eñes y tildes en consulta SQL

Cita:
Existe alguna solución que me permita sacar los caracteres especiales al momento de realizar la consulta?
Quitar caracteres en la cadena de texto que entra como dato de comparación no es una opción, sólo te generaría resultados erróneos, incorrectos, o simplemente no devolvería los datos buscados.
Por lo demás, siendo que existen desde el inicio de las BBDD, los charset y collation, que resuelven la compatibilidad de caracteres entre diferentes idiomas, es absolutamente innecesario hacer malabares como los que planteas.
Antes bien lo que te conviene es aprender a programar las conexiones y las consultas correctamente.
Intentar atajos sólo te llevará a cometer errores.

En cuanto a los datos ya guardados, se cumple una de las reglas de mi profesor de BBDD: "Si guardas basura en la base, luego obtendrás información basura."
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 26/08/2015, 15:00
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 14 años
Puntos: 3
Respuesta: Comparar eñes y tildes en consulta SQL

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Quitar caracteres en la cadena de texto que entra como dato de comparación no es una opción, sólo te generaría resultados erróneos, incorrectos, o simplemente no devolvería los datos buscados.
Por lo demás, siendo que existen desde el inicio de las BBDD, los charset y collation, que resuelven la compatibilidad de caracteres entre diferentes idiomas, es absolutamente innecesario hacer malabares como los que planteas.
Antes bien lo que te conviene es aprender a programar las conexiones y las consultas correctamente.
Intentar atajos sólo te llevará a cometer errores.

En cuanto a los datos ya guardados, se cumple una de las reglas de mi profesor de BBDD: "Si guardas basura en la base, luego obtendrás información basura."
Si eso que mencionas lo puedo aprender de los charset,collation, conexiones, etc, pero mi problema es que hay bastantes registros guardados en la tabla y por eso consultaba si existía alguna solución. Las cosas que mencionas podre utilizarlas a futuro cuando debe diseñar algo desde cero, lamentablemente en mi caso estoy con un sistema que ya funciona de esa forma guardando tildes y eñes.
  #7 (permalink)  
Antiguo 26/08/2015, 15:32
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 2 meses
Puntos: 2654
Respuesta: Comparar eñes y tildes en consulta SQL

Cita:
lamentablemente en mi caso estoy con un sistema que ya funciona de esa forma guardando tildes y eñes.
SI las guarda, el sistema está bien diseñado. Lo que TU debes hacer es programar correctamente para que las consultas lleguen bien a la base, y la base pueda interpretar correctamente los caracteres extendidos.

Me parece que estás mirando el problema desde el lado equivocado. Lo mal que haces es quirar algo que en realidad deberías estar enviando. En todo caso tu conexión y tu manejo de la construccion de la consulta debe estar mal hecho.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 26/08/2015, 19:23
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.000
Antigüedad: 11 años, 6 meses
Puntos: 2197
Respuesta: Comparar eñes y tildes en consulta SQL

Si tus tablas tienen la codificación adecuada, por ejemplo utf8_spanish_ci, y estás guardando los caracteres tal cual, sin convertir a entidades html ni normalizar, entonces no deberías tener problemas para obtener los resultados deseados y, si ese fuera el caso, este tema no tiene que ver con PHP.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: eñes, formulario, select, sql, tabla, tildes
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 03:02.