Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta sin importar tildes, mayusculas o minusculas

Estas en el tema de Consulta sin importar tildes, mayusculas o minusculas en el foro de Mysql en Foros del Web. Hola. Espero puedan ayudarme a resolver de la mejor manera la siguiente cuestion. Mis consultas parecen ser por defecto case sensitive y me distingue tildes, ...
  #1 (permalink)  
Antiguo 12/09/2012, 01:13
 
Fecha de Ingreso: abril-2011
Mensajes: 14
Antigüedad: 13 años
Puntos: 1
Mensaje Consulta sin importar tildes, mayusculas o minusculas

Hola. Espero puedan ayudarme a resolver de la mejor manera la siguiente cuestion.

Mis consultas parecen ser por defecto case sensitive y me distingue tildes, acentos y mayusculas.

¿Como puedo cambiarlo?¿Como puedo hacer una consulta para que no importe si el registro que busque tenga o no tildes o este o no en mayuscula?.

Tengo los datos guardados de la siguiente manera:

HOSTELERÃA Y TURISMO --> que seria hotelería y turismo

La tabla esta en: utf8_spanish2_ci. Esta en InnoDB.

Y mi consulta es:

Código:
$cadbusca = "SELECT id , titulo FROM area WHERE titulo LIKE '%$busqueda%'";
Tambien he probado y tampoco funciona:

Código:
$cadbusca = "SELECT id , titulo FROM area WHERE titulo LIKE CONVERT( _utf8 '%$busqueda%' USING latin1 ) COLLATE latin1_general_ci ";
Que parametros tengo que utilizar o cual es la consulta para recibir resultados sin importar los acentos, tilde, eñes o mayusculas o minusculas??

Ejemplo de funcionamiento: buscar --> "hosteleria" y muestre el resultado para el valor --> "HOSTELERÃA"

Gracias de antemano por la ayuda.

Última edición por pedroparra; 12/09/2012 a las 03:38
  #2 (permalink)  
Antiguo 12/09/2012, 07:08
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta sin importar tildes, mayusculas o minusculas

Es que los datos no están bien guardados. Quiero decir que aunque la base tenga la codificación adecuada, que la tiene, y los campos imagino que también, cuando pasas los datos mediante programación tanto el archivo php o html tienen codificación distinta y falta de etiquetas, y en la conexión tampoco uses SET NAMES('utf-8') tras seleccionar la base cuando se usa una conexión al modo clásico. Todo eso hace que lo que no se pueda consultar bien. Piensa que esa à no es ni i, ni í, ni I, ni Í, ni Ï, etc, es decir, o es una i, y por tanto de nada sirve una correcta codificación y el cotejamiento _ci que has usado y que es el adecuado para lo que quieres, utf8_spanish2_ci.
HOSTELERÃA Y TURISMO
Como parece que la codificación de la base la tienes bien, pide ayuda en el foro de tu programa para resolver el tema y verás que la codificación que elegiste es la adecuada para lo que quieres.

Última edición por jurena; 12/09/2012 a las 11:28
  #3 (permalink)  
Antiguo 12/09/2012, 10:23
 
Fecha de Ingreso: abril-2011
Mensajes: 14
Antigüedad: 13 años
Puntos: 1
Pregunta Respuesta: Consulta sin importar tildes, mayusculas o minusculas

Cita:
Iniciado por jurena Ver Mensaje
Es que los datos no están bien guardados. Quiero decir que aunque la base tenga la codificación adecuada, que la tiene, y los campos imagino que también, cuando pasas los datos mediante programación tanto el archivo php o html tienen codificación distinta y falta de etiquetas, y en la conexión tampoco uses SET NAMES('utf-8') tras seleccionar la base cuando se usa una conexión al modo clásico. Todo eso hace que lo que no se pueda consultar bien. Piensa que esa à no es ni i, ni í, ni I, ni Í, etc, es decir, o es un i, y por tanto de nada sirve una correcta codificación y el cotejamiento _ci que has usado y que es el adecuado para lo que quieres, utf8_spanish2_ci.
HOSTELERÃA Y TURISMO
Como parece que la codificación de la base la tienes bien, pide ayuda en el foro de tu programa para resolver el tema y verás que la codificación que elegiste es la adecuada para lo que quieres.
Gracias por tu respuesta. He solucionado el problema a medias. Aver si lo solucionamos de una vez. Esta es la situacion:

- Base de datos : (Ya cambié la forma en la que se guardan los datos quedando de la siguiente manera)

Código:
Tabla AREA
-----------------------------------------------
id -->43  - titulo --> EDIFICACIÓN
id -->44  - titulo --> ENERGÍAS RENOVABLES
------------------------------------------
CHARACTER SET utf8 
COLLATE utf8_spanish2_ci
My script final:

Código PHP:
header('Content-Type: text/html; charset=UTF-8');
$busqueda $_POST['busqueda'];

// Datos de conexion:
$mysqli = new mysqli($conection['server'], $conection['user'], $conection['pass'], $conection['base']);
if (
mysqli_connect_errno()) { printf("Conexión fallida: %s\n"mysqli_connect_error()); exit(); }

@
mysql_query("SET NAMES 'utf8'");

if(
$busqueda<>''){

$cadbusca "SELECT id , titulo FROM area WHERE titulo LIKE '%".$busqueda."%'";

$result mysqli_query($mysqli$cadbusca) or die ("Error: ".mysqli_error($mysqli));
$row_cnt mysqli_num_rows($result);

if(
$row_cnt>0){

echo 
"<p>Areas: </p><ul>";

while(
$row mysqli_fetch_array($resultMYSQLI_ASSOC)){ echo "<li><a href='cursos.php?idarea=".$row['id']."'>" utf8_encode($row['titulo']) . "</a></li>";}

echo 
"</ul>";

}


De esta forma ocurre lo siguiente:

Buscando --> edificacion --> muestra el resultado correctamente -> EDIFICACIÓN
Buscando --> energias --> no encuentra ningun resultado.

Alguien sabe como hacer para que funcione correctamente??
  #4 (permalink)  
Antiguo 12/09/2012, 10:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta sin importar tildes, mayusculas o minusculas

No estoy seguro, pero me parece que no es un problema de base de datos. Si haces la consulta desde consola o desde PHPMyAdmin es posible que salga bien. Pregunta en el foro PHP sobre el uso de mysqli y los parámetros para la codificación, que no son, creo, SET NAMES...
  #5 (permalink)  
Antiguo 12/09/2012, 10:43
 
Fecha de Ingreso: abril-2011
Mensajes: 14
Antigüedad: 13 años
Puntos: 1
Respuesta: Consulta sin importar tildes, mayusculas o minusculas

Gracias jurena voy a preguntar por php, aver si me hacen caso y lo resuelvo pronto. Si alguien de por aqui se le ocurre... se lo agradezco tambien. Estoy desesperado. Jurena tienes mis 2 Karmas! GRACIAS
  #6 (permalink)  
Antiguo 12/09/2012, 11:26
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta sin importar tildes, mayusculas o minusculas

No te preocupes, estos problemas se resuelven. Prueba en PHPMyAdmin a ver si persiste el problema. Mira también si la codificación del archivo php o html donde incluyes el formulario para hacer la búsqueda es utf-8. Piensa que también esos archivos de texto plain en los que escribimos el código tienen su codificación...
  #7 (permalink)  
Antiguo 13/09/2012, 01:53
 
Fecha de Ingreso: abril-2011
Mensajes: 14
Antigüedad: 13 años
Puntos: 1
Sonrisa Respuesta: Consulta sin importar tildes, mayusculas o minusculas

Cita:
Iniciado por jurena Ver Mensaje
No te preocupes, estos problemas se resuelven. Prueba en PHPMyAdmin a ver si persiste el problema. Mira también si la codificación del archivo php o html donde incluyes el formulario para hacer la búsqueda es utf-8. Piensa que también esos archivos de texto plain en los que escribimos el código tienen su codificación...
YA LO RESOLVI!!!!!!!!

CONSEJO IMPORTANTE! aveces no solo es necesario cambiar codificación, sino reescribir los datos de la tabla!

Etiquetas: codificacion, mayusculas, 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 16:59.