Foros del Web » Programando para Internet » PHP »

Problema con tildes y busquedas en MYSQL

Estas en el tema de Problema con tildes y busquedas en MYSQL en el foro de PHP en Foros del Web. Hola a todos, estoy desesperado porque no consigo mi propósito. Os cuento, tengo una tabla en mysql con la codificación latin_spanisth, que guarda todo con ...
  #1 (permalink)  
Antiguo 11/06/2014, 01:15
 
Fecha de Ingreso: junio-2014
Mensajes: 6
Antigüedad: 8 años, 2 meses
Puntos: 0
Problema con tildes y busquedas en MYSQL

Hola a todos, estoy desesperado porque no consigo mi propósito.

Os cuento, tengo una tabla en mysql con la codificación latin_spanisth, que guarda todo con htmlentities, es decir no almacena las palabras con tildes como tal sino con su correspondencia html...

ejemplo: en vez de guardar sillón, guarda sillón

El problema que tengo es que si quiero realizar una busqueda con mysql, no consigo que me busque nada, tanto si pongo sillon como sillón, porque realmente esas palabras no existen en la tabla ...

Select * from tabla where campo like '%sillón%' DEVUELVE VACIO
Select * from tabla where campo like '%sillon%' DEVUELVE VACIO

No puedo modificar la tabla porque tiene muchísimos datos.

¿algún consejo?

Muchas gracias
  #2 (permalink)  
Antiguo 11/06/2014, 02:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 14 años, 5 meses
Puntos: 574
Respuesta: Problema con tildes y busquedas en MYSQL

Estamos en php

Código PHP:
Ver original
  1. $busqueda="sillón";
  2. sql="Select * from tabla where campo like '%".htmlentities($busqueda)."%'";

No?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 11/06/2014, 02:54
 
Fecha de Ingreso: junio-2014
Mensajes: 6
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Problema con tildes y busquedas en MYSQL

no porque no me buscaría si han metido la palabra sin tilde jeje.

Imaginad que busco por la palabra sillon, pues no aparecería ningun resultado.
  #4 (permalink)  
Antiguo 11/06/2014, 04:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 14 años, 5 meses
Puntos: 574
Respuesta: Problema con tildes y busquedas en MYSQL

Si tienes guardado "sillón" la cosa se complica.

Lo que quisieras es que

SELECT "sillón"="sillón"; ->1
SELECT "sillon"="sillón"; ->1
SELECT "sillón"="sillón"; ->1

??? Suerte.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 11/06/2014, 05:58
 
Fecha de Ingreso: junio-2014
Mensajes: 6
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Problema con tildes y busquedas en MYSQL

no te entiendo, lo que quiero es que si pongo sillon en la busqueda me busque todo sin tilde y con ella, pero al estar almacenado con acute en la base de datos es jodido.

Pienso que la unica solución es añadir and en la sql, pero claro si hay muchas vocales las opciones se multiplican ...
  #6 (permalink)  
Antiguo 11/06/2014, 06:27
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con tildes y busquedas en MYSQL

No sé quién te habrá dicho o dónde habrás leído que los datos se sanitizan antes de guardarlos en la base de datos o justo después de entrar en tu aplicación, ¿desde cuándo mysql ejecuta código html?... desde luego te han matado...

Si fuese mi base de datos, lo primero haría REPLACE a todo para tener los datos en su forma original (copia de seguridad, por favor) y para poder realizar la comparación utilizaría un COLLATION acabado en "_ci" (case-insensitive)
  #7 (permalink)  
Antiguo 11/06/2014, 07:05
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 12 años, 2 meses
Puntos: 28
Respuesta: Problema con tildes y busquedas en MYSQL

primero que nada es mala practica guardar en la base de datos utilizando htmlentities como se le llame...

lo mejor es guardar tal cual las letras y para lograr el maximo de signos raros guardados sin tener problema recomiendo usar en la base de datos colattion unicode_ci y luego el colation de las tablas en utf8_general_ci.

eso de que tiene tu base de datos tiene mucha informacion tiene solucion:

yo en tu caso hago un back up a un archivo SQL,
lo abro con notepad++ y hago una busqueda de reemplazo:

cambiando todo los que encuentre: ó
por: ó y guala.

hacer el mismo procedimiento con áéíóúñ y símbolos raros

lo que si recomiendo es utilizar el zanitizador de php

Código PHP:
Ver original
  1. function sanitize($input) {
  2.     if (is_array($input)) {
  3.         foreach($input as $var=>$val) {
  4.             $output[$var] = sanitize($val);
  5.         }
  6.     }
  7.     else {
  8.         if (get_magic_quotes_gpc()) {
  9.             $input = stripslashes($input);
  10.         }
  11.         $input  = cleanInput($input);
  12.         $output = mysql_real_escape_string($input);
  13.     }
  14.     return $output;
  15. }


y si tienes problemas aun con la impresion por pantalla de caracteres especiales te sugiero que sigas las indicaciones de este otro post: link
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #8 (permalink)  
Antiguo 11/06/2014, 07:54
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 13 años, 10 meses
Puntos: 36
Respuesta: Problema con tildes y busquedas en MYSQL

Primeramente, yo tu haria lo que te aconsejo "arcanisgk122"

"... yo en tu caso hago un back up a un archivo SQL,
lo abro con notepad++ y hago una busqueda de reemplazo:
cambiando todo los que encuentre: ó
por: ó y guala.
hacer el mismo procedimiento con áéíóúñ y símbolos raros ...."

y despues llegate a este enlace y mira lo que deje para solucionar los problemas con los acentos.

http://www.forosdelweb.com/f18/probl...4/#post4609100

Suerte...

Etiquetas: busquedas, html, mysql, select, 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 21:31.