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

Problema con esta consulta

Estas en el tema de Problema con esta consulta en el foro de Mysql en Foros del Web. Hola tengo una consulta sobre como hacer un buscador interno con php y mysql Mi buscador es algo simple usa el comando LIKE Ej campo ...
  #1 (permalink)  
Antiguo 11/02/2010, 15:20
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
Problema con esta consulta

Hola tengo una consulta sobre como hacer un buscador interno con php y mysql

Mi buscador es algo simple usa el comando LIKE

Ej

campo LIKE '%$busca%'

Ahora el problema que tengo es con las tildes…

Si la palabra tiene tilde y yo ingreso sin tilde no me muestra el resultado

Navegando por internte me he econtrado que agregando a mi consulta

titulo LIKE '%$pal%'

Lo siguiente COLLATE Modern_Spanish_CI_AI

Solucionaría el problema

Digamos algo asi

titulo LIKE '%$pal%' COLLATE Modern_Spanish_CI_AI

ahora yo lo quiero implemetar y no me funciona y me da error

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in …

Por el echo de que busco en varios campos de mi tabla y busco mas de una palabra en mi base de datos

Algo asi


$consulta_busca=" SELECT campo1, campo2, campo3, campo4 FROM comercios WHERE (campo1 LIKE '%$pal%' OR campo2 LIKE '%$pal%' OR campo3 LIKE '%$pal%' OR campo4 LIKE '%$pal%' ") AND (campo1 LIKE '%$pal2%' OR campo2 LIKE '%$pal2%' OR campo3 LIKE '%$pal2%' OR campo4 LIKE '%$pal2%' ")

Ahora como hago para ingresarle COLLATE Modern_Spanish_CI_AI a esta consulta?

He?

Gracias
  #2 (permalink)  
Antiguo 11/02/2010, 15:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Problema con esta consulta

win007,
cambia el cotejamiento de esos campos en los que buscas a un cotejamiento con terminación _ci apropiado para tu codificación.
También podrías hacerlo en la consulta al vuelo mediante collate. Mira el manual. Yo te aconsejo que si vas a hacer búsquedas sobre esos campos con case insensitive (ci), cambies el cotejamiento de los mismos.
  #3 (permalink)  
Antiguo 11/02/2010, 16:28
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: Problema con esta consulta

Entre el foro para responder preguntas y esta me llamo la atencion mucho, pero no entendi absolutamente nada de lo que respondiste jurena
  #4 (permalink)  
Antiguo 11/02/2010, 16:31
Avatar de webness  
Fecha de Ingreso: enero-2009
Ubicación: BOGOTA
Mensajes: 312
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: Problema con esta consulta

http://www.capitalfederal.com/foros/...php?=&p=471183
  #5 (permalink)  
Antiguo 11/02/2010, 16:55
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema con esta consulta

Hola a todos y gracias por su consulta.

Hay algo que no entiendo.

en myphpadmin veo la extructura de mi tabla y veo que el tiene el siguiente cortejamiento latin1_swedish_ci

ya tiene _ci al final... pero si buscas dia sin acento no encuentra nada

De todas formas intento hacer la consulta ingresando COLLATE y no pasa nada

asi realizo la consulta

$consulta=" SELECT noticia FROM tabla WHERE noticia LIKE '%$busqueda%' COLLATE latin1_swedish_ci ";

Y sigue sin dar resultados en las busquedas de palabras sin tildes

Que hago mal?
  #6 (permalink)  
Antiguo 11/02/2010, 23:52
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema con esta consulta

Nadie me ayuda?
  #7 (permalink)  
Antiguo 12/02/2010, 08:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Problema con esta consulta

No sé realmente qué base de datos estás usando. En realidad, no he visto nunca el cotejamiento del que hablas en MySQL. Tal vez usas SQL server.

Si fuera MySQL, yo cambiaría el cotejamiento del campo, pero usando la codificación y cotejamiento apropiados. No sé cuál usas tú: yo he puesto la codificación latin1, pero debes ver cuál usas tú. No uses la que yo te he puesto si no es la tuya.

ALTER TABLE `tutabla` CHANGE `campo1` `campo1` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_spanish_ci NOT NULL

No sé qué codificación estás usando, si es latin1, utf8 o qué otra.
Dinos eso primero y te aconsejaremos, pero no uses un cotejamiento del sueco, sino del español, si es que vas a comparar texto en español. No sé si tu campo tiene o no NOT NULL y tampoco la codificación

Ahora no puedo hacer mucho, pero más tarde intentaré volver y darte indicaciones más precisas.

Última edición por jurena; 12/02/2010 a las 08:56
  #8 (permalink)  
Antiguo 13/02/2010, 00:22
 
Fecha de Ingreso: febrero-2010
Mensajes: 4
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema con esta consulta

Estoy usando latin1_swedish_ci
  #9 (permalink)  
Antiguo 13/02/2010, 02:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Problema con esta consulta

Pues cambia el cotejamiento o collation a latin1_spanish2_ci.
Debes saber que hay diferencia entre charset o codificación, y cotejamiento o collation. El cotejamiento o collation sirve para comparar y ordenar (echa un vistazo en la wikipedia, versión inglesa). Un ejemplo claro es el del orden alfabético. Dos lenguas pueden usar los mismos caracteres, pero ordenarlos de manera distinta. Acuérdate de cuando nosotros ordenábamos la ll y la ch en lugares distinos a lo que lo hacemos ahora por culpa de los ordenadores (por eso ahora usamos latin1_spanish2_ci. Cuando tú dices tener latin1_swedish_ci, me estás diciendo que usas ese cotejamiento, que es el del sueco, lo que me lleva a deducir que tu charset o codificación es latin1. Imagino que por defecto tus tablas y tus campos usarán la misma codificación y cotejamiento (comprueba eso).
Si tú cambias el cotejamiento de tus campos a latin1_swedish_ci a latin1_spanish2_ci al realizar la búsqueda sin acento te encontraría los que tienen y los que no tienen acento.
Dejándolo como lo tienes, también puede hacerse al vuelo, como te dije.
Pero debes asegurarte de que todo está bien, es decir, de que el charset de la base es latin1, el cotajimiento es latin1_spanish_ci, para la base, las tablas y los campos.
  #10 (permalink)  
Antiguo 28/02/2010, 12:43
 
Fecha de Ingreso: enero-2010
Mensajes: 5
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con esta consulta

no tengo latin1_spanish2_ci ni en mi localhost appserver la ultima version ni en el host ....

WTF?
  #11 (permalink)  
Antiguo 28/02/2010, 16:07
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: Problema con esta consulta

Cita:
no tengo latin1_spanish2_ci ni en mi localhost appserver la ultima version ni en el host ....
Eso no depende del localhost, ni de AppServer, sino de MySQL...
Es en la base de datos donde debes controlar el problema (y en la conexión, si usas una por fuera del funcionamiento del AppServer).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: Ninguno
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 04:39.