Vaya!! strtolower y strtoupper tampoco funcionan con las letras
tildadas.
Hay que utilizas mb_strtoupper($string, 'UTF-8') y
mb_strtolower($string, 'UTF-8');

On 2 dic, 13:14, Fran Moreno <[email protected]> wrote:
> En teoría, el LIKE de mysql no diferencia entra mayúsculas y
> minúsculas, pero me he encontrado un bug, y es que sí detecta la
> diferencia cuando las letras están acentuadas.
> Por ejemplo:
> Para buscar Sevilla puedo hacerlo buscando Sevilla o sevilla.
> Para buscar Cáceres puedo hacerlo buscando Cáceres o cáceres, pero no
> Caceres.
> Para buscar Álava, no funciona buscarlo por alava, ni álava, ni Alava.
>
> Un caso opuesto: para encontrar Cáceres no funciona buscarlo como
> CÁCERES, pero si como CáCERES. Esto demuestra que el problema está en
> las mayúsculas con tilde.
>
> La recomendación quizás sea aplicar un filtro previo a la búsqueda que
> pase a minúscula las palabras mayúsculas acentuadas o viceversa o a
> ambas, y realizar dos búsquedas.
>
> La instrucción de conversión en php es:
> $string = str_replace('Á', 'á', $string); //Para letras sueltas
> $string = strtolower($string);
> $string = strtoupper($string);
>
> On 1 dic, 17:37, Sergio Villalba <[email protected]> wrote:
>
>
>
>
>
>
>
> > Un problema que tengo, con mayusculas y minusculas no obtengo los
> > mismos resultados...
>
> > ¿existe alguna opción?
>
> > Búscando algo de información solo encontrado 
> > esto:http://foros.cristalab.com/buscador-php-mysql-con-mayusculas-minuscul...
>
> > Gracias por todo, un saludo.
>
> > El día 30 de noviembre de 2011 11:55, Sergio Villalba
> > <[email protected]> escribió:
>
> > > Ok muchas gracias.
>
> > > PD: para quien le interese, FullText por defecto no realizar búsquedas
> > > por 3 caracteres....hay que añadir la siguiente línea en el fichero
> > > my.cnf y volver a crear el indice FullText.
>
> > > [mysqld]
> > > ft_min_word_len = 3
>
> > > El día 30 de noviembre de 2011 10:22, Fran Moreno
> > > <[email protected]> escribió:
> > >> Puedes realizar dos búsquedas, una con '%SAR%' y almacenarla en el
> > >> array $importante[] y luego otra con '% SAR %' y almacenarla en el
> > >> array $resto[].
>
> > >> Despues haces una unión de los dos arrays con la instruccion:
> > >> $union = array_unique(array_merge($importante[], $resto[]));
>
> > >> En el array $union[] quedarían primero los resultados importantes y
> > >> después el resto.
>
> > >> El problema de esta solución es que después no se puede paginar
> > >> (creo).
>
> > >> On 29 nov, 17:31, Sergio Villalba <[email protected]> wrote:
> > >>> Hola a tod@s,
>
> > >>> desde ya Gracias.
>
> > >>> Mi pregunta esta relacionada con SQL, lo que quiero es clasificar las
> > >>> búsquedas que se realizan en un buscador, pongo un ejemplo:
>
> > >>> En mi caso la palabra "SAR" tiene mayor importancia que "SARDINA",
> > >>> aunque puede ser valida.....vaya ejemplo :D
>
> > >>> Mi consulta SQL actual es:
>
> > >>> SELECT * FROM tabla WHERE (contenido like '%SAR%' OR titulo like 
> > >>> '%SAR%')
>
> > >>> Quiero cambiarla por:
>
> > >>> SELECT * FROM tabla WHERE ((contenido like '% SAR %') OR (contenido
> > >>> like '%SAR%') OR (titulo like '% SAR %') OR (titulo like '%SAR%'))
>
> > >>> Lo que quiero es añadirle una condicionante para clasificar lo
> > >>> resultados que para mí son más importantes con la siguiente
> > >>> condicionante:
>
> > >>> - Si encuentra algo que sea "%espacio SAR espacio%" valor es 1.
> > >>> - Si encuentra algo que sea "%SAR%" valor es 2.
>
> > >>> Por último, mi consulta la ordenaría por este valor 1 y 2 llamador
> > >>> norder y por titulo.
>
> > >>> Que tipo de orden puedo utilizar en SQL para realizar lo que
> > >>> necesito...mi bbdd es MySQL.
>
> > >>> Gracias por todo. Un saludo.
>
> > >> --
> > >> Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de 
> > >> Grupos de Google.
> > >> Para publicar una entrada en este grupo, envía un correo electrónico a 
> > >> [email protected].
> > >> Para anular tu suscripción a este grupo, envía un correo electrónico a 
> > >> [email protected]
> > >> Para tener acceso a más opciones, visita el grupo 
> > >> enhttp://groups.google.com/group/cakephp-es?hl=es.

-- 
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos 
de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a 
[email protected].
Para anular tu suscripción a este grupo, envía un correo electrónico a 
[email protected]
Para tener acceso a más opciones, visita el grupo en 
http://groups.google.com/group/cakephp-es?hl=es.

Responder a