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

Buscador PHP y MySQL (Me distingue entre mayusculas y minusculas...)

Estas en el tema de Buscador PHP y MySQL (Me distingue entre mayusculas y minusculas...) en el foro de Mysql en Foros del Web. Estoy programando un buscador para mi WEB. Uso la comparación LIKE si se busca 1 sola palabra o MATCH AGAINST si son varias (sobre indices ...
  #1 (permalink)  
Antiguo 28/03/2011, 12:26
 
Fecha de Ingreso: noviembre-2009
Mensajes: 21
Antigüedad: 14 años, 5 meses
Puntos: 1
Buscador PHP y MySQL (Me distingue entre mayusculas y minusculas...)

Estoy programando un buscador para mi WEB. Uso la comparación LIKE si se busca 1 sola palabra o MATCH AGAINST si son varias (sobre indices FULL TEXT claro). Todo funciona correctamente, excepto porque distingue entre mayusculas y minusculas a la hora de la busqueda. No es lo mismo buscar Pepe, que PePe o pepe... Para colmo he verificado que el problema es de la BD MySQL ya que con el buscador de phpMyAdmin ocurre lo mismo.

La base de datos y las tablas usan el cotejamiento "utf8_general_ci" y la tabla sobre la que realizo las consultas es MyISAM.

Estoy desquiciado ya que tras leer mucho siempre se llega a la misma conclusión: MATCH AGAINST no distingue entre mayusculas y minusculas, y las tablas con el cotejamiento "_ci" tampoco. (Esto extraido de la página de mysql...).

RESUMEN: Ni mi buscador ni el de phpMyAdmin pueden encontrar la palabra "Pepe" si busco "pepe".

Agradezco cualquier pista o ayuda de antemano, gracias.
  #2 (permalink)  
Antiguo 28/03/2011, 13:36
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Buscador PHP y MySQL (Me distingue entre mayusculas y minusculas...)

Cita:
La base de datos y las tablas usan el cotejamiento "utf8_general_ci" y la tabla sobre la que realizo las consultas es MyISAM.
¿Podrías postear el CREATE TABLE de cada una de las tablas involucradas? Puedes acceder a él con la sentencia
Código MySQL:
Ver original
  1. SHOW CREATE TABLE nombreTabla
De ser posible, postea la sentencia SQL que usas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 29/03/2011, 04:58
 
Fecha de Ingreso: noviembre-2009
Mensajes: 21
Antigüedad: 14 años, 5 meses
Puntos: 1
Respuesta: Buscador PHP y MySQL (Me distingue entre mayusculas y minusculas...)

Aqui el Create Table:

Código:
CREATE TABLE `XXXXX(censurada esta parte xP)` (
 `id` int(11) NOT NULL auto_increment,
 `titulo` varchar(500) character set utf8 collate utf8_bin NOT NULL,
 `texto` text character set utf8 collate utf8_bin NOT NULL,
 `negativos` int(11) NOT NULL,
 `positivos` int(11) NOT NULL,
 `autor` varchar(255) character set utf8 collate utf8_bin NOT NULL,
 `fecha` timestamp NOT NULL default CURRENT_TIMESTAMP,
 `publicidad` tinyint(1) default NULL,
 `destacado` tinyint(1) default NULL,
 `aprobado` tinyint(1) NOT NULL,
 PRIMARY KEY  (`id`),
 FULLTEXT KEY `titulo` (`titulo`,`texto`,`autor`)
) ENGINE=MyISAM AUTO_INCREMENT=47 DEFAULT CHARSET=utf8
Gracias al Show Create Table me he dado cuenta de una anomalía: "character set utf8 collate utf8_bin". O.o WTF? Ese es el problema, esta claro que es de la Base de Datos y no de mi consulta. Al hacer un ALTER Table para crear el indice FULL TEXT parece que cambió el cotejamiento de esos 3 campos a utf_bin....

He eliminado el indice FULLTEXT, cambiado el cotejamiento de los campos otra vez y vuelto a crear el indice. Todo funciona a la perfección.

Muchisimas gracias!
  #4 (permalink)  
Antiguo 29/03/2011, 05:10
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Buscador PHP y MySQL (Me distingue entre mayusculas y minusculas...)

Tenía la sospecha que por allí podía venir el asunto...
Algunas veces he tenido problemas de cotejamiento en ciertos procesos y era precisamente porque ciertos campos tenúan un charset distinto a la tabla y a la base.

Me alegro que te sirviera.

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 04/05/2011, 15:58
 
Fecha de Ingreso: mayo-2011
Mensajes: 2
Antigüedad: 12 años, 11 meses
Puntos: 1
Respuesta: Buscador PHP y MySQL (Me distingue entre mayusculas y minusculas...)

Buen aporte, muchas veces nos pasa que por una tontería te pasas horas buscando el problema y no hay manera. Y cuando lo encuentras te dan ganas de pegarte un tiro.

Etiquetas: mayusculas, minusculas, php, buscadores
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 13:14.