Foros del Web » Programando para Internet » PHP »

Buscador de productos

Estas en el tema de Buscador de productos en el foro de PHP en Foros del Web. Buenas Estoy creado un buscador de productos, pero me he topado con un problema al momento de realizar la búsqueda. Me explico: El buscador es ...
  #1 (permalink)  
Antiguo 02/05/2014, 13:42
Avatar de elbuensaint  
Fecha de Ingreso: marzo-2009
Ubicación: Chiwas
Mensajes: 178
Antigüedad: 15 años, 1 mes
Puntos: 7
Buscador de productos

Buenas

Estoy creado un buscador de productos, pero me he topado con un problema al momento de realizar la búsqueda. Me explico:

El buscador es para rines de autos, así que el cliente tiene que escojer el modelo de su auto para poder mostrarle los rines compatibles (previamente cargados a la base de datos, tanto modelos de autos como rines). La forma en la que realizo la búsqueda es por medio de los ID de modelos y rines con el operador LIKE de sql, pero se complica cuando hay rines que son compatibles con mas de un modelo.

Por ejemplo, tengo dos rines, uno tiene guardado en el campo "id_modelos" lo siguiente "1,2,8," (los ID de los modelos separados por coma) y el otro "3,4,22". Al momento de realizar la búsqueda con LIKE '%2%', el cliente esperaría ver solo el primer rin, que es el compatible con su modelo, pero aparece también el segundo porque el 2 está presente...

¿Se puede realizar la búsqueda excluyendo los registros que no coincidan? ¿O alguna otra forma de realizar el buscador que no sea utilizando el operador LIKE o la forma de guardar los id de los modelos?

Espero haberme explicado bien y que me puedan ayudar.

Saludos!!
  #2 (permalink)  
Antiguo 02/05/2014, 13:58
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Buscador de productos

Si solamente quieres que aparezca un resultado que coincida exactamente con lo tipeado, utiliza la cláusula WHERE como si se tratara de la búsqueda para un único elemento, a esto, le añades la búsqueda con LIKE pero en una condición con el operador lógico OR.

Esto debió ser publicado en el foro de MySQL.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 02/05/2014, 14:04
Avatar de elbuensaint  
Fecha de Ingreso: marzo-2009
Ubicación: Chiwas
Mensajes: 178
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Buscador de productos

No entendí muy bien lo de utilizar LIKE con OR, ¿me podrías dar un ejemplo?

Cita:
Esto debió ser publicado en el foro de MySQL.
Cierto, estaba acostumbrado a postear principalmente en PHP y no me di cuenta, espero que algún mod lo pueda mover...
  #4 (permalink)  
Antiguo 02/05/2014, 16:25
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Buscador de productos

Me refiero a que en la consulta, utilices WHERE y LIKE, pero en una condición.

Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE id = 'dato' OR id LIKE '%dato%'

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 02/05/2014, 16:54
Avatar de andresgarciadev  
Fecha de Ingreso: junio-2013
Mensajes: 218
Antigüedad: 10 años, 10 meses
Puntos: 32
Respuesta: Buscador de productos

pues... segun lo veo seria cuestion de validar asi:
Código MySQL:
Ver original
  1. SELECT * FROM tabla WHERE id_modelos LIKE '%,2,%' OR  LIKE '2,%' OR  LIKE '%,2'
no puedo probarlo ahorita pero creo que asi seria
  #6 (permalink)  
Antiguo 02/05/2014, 19:40
Avatar de elbuensaint  
Fecha de Ingreso: marzo-2009
Ubicación: Chiwas
Mensajes: 178
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Buscador de productos

@Alexis88: De esa forma aún me aparecerían los resultados que contengan el número aunque no sea exacto, por ejemplo si busco id = 2, aparece también id = 22

@andresgarciadev: Casi se soluciona con eso, pero hay un problema con la condición LIKE '2,%', ya que si las id son 22,24,50 aunque no haya un 2 solo de todos modos aparece en los resultados.

Ahora se me ocurre guardar los ID con un caractér como prefijo y sufijo, algo como -2-,-22-,-24- ¿será la única forma de hacerlo?
  #7 (permalink)  
Antiguo 02/05/2014, 19:56
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Buscador de productos

¿Y si solamente lo haces con WHERE? Quitando lo de LIKE, obviamente.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 02/05/2014, 20:21
Avatar de elbuensaint  
Fecha de Ingreso: marzo-2009
Ubicación: Chiwas
Mensajes: 178
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Buscador de productos

Mmm, no se puede porque se guardan uno o mas id's de los modelos, tanto puede ser un solo número, como pueden ser varios separados por comas. Al hacer la consulta solamente con WHERE = numero dejaría fuera todos los rines que tienen guardados mas de un ID de modelo aunque si sean compatibles, no sé si me explique bien.
  #9 (permalink)  
Antiguo 02/05/2014, 20:32
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Buscador de productos

No lo he intentado, pero solo por curiosidad, ¿Lo has intentado sin utilizar los comodines %?

Otra solución que se me ocurre es que añadas un filtro más en la consulta, para que así tomes solamente el elemento deseado.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 02/05/2014 a las 20:50
  #10 (permalink)  
Antiguo 02/05/2014, 20:53
Avatar de elbuensaint  
Fecha de Ingreso: marzo-2009
Ubicación: Chiwas
Mensajes: 178
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Buscador de productos

Sí lo intenté y no me devuelve registros.
---
Volví a probar el método de andresgarciadev y al parecer estaba haciendo algo mal y ahora ya me funcionó. Al final mi sentencia quedó así:

Código MySQL:
Ver original
  1. SELECT * FROM `rines` WHERE `id_modelo` = '2' OR `id_modelo` LIKE '%,2,%' OR `id_modelo`  LIKE '2,%' OR `id_modelo` LIKE '%,2'

Muchas gracias a los dos por la ayuda ;)
  #11 (permalink)  
Antiguo 02/05/2014, 20:56
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Buscador de productos

Había olvidado el tema de las comas.

¡Enhorabuena, elbuensaint!
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: buscador, productos, registro, sql
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 11:56.