Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/12/2014, 13:38
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: buscador con filtro desde diferentes tablas

Te falta por lo menos una tabla.

#productos
->id_producto :: PRIMAY KEY
->nombre
->slug :: UNIQUE KEY
->descripcion

#filtros_categoria
->id _filtro_categoria :: PRIMAY KEY
->nombre
->slug :: UNIQUE KEY
->tipo_relacion (AND ó OR)

#tipo_filtros
->id_tipo_filtro :: PRIMAY KEY
->id_filtro_categoria :: FOREIGN KEY #filtro->id_filtro
->nombre
->slug :: UNIQUE KEY

#filtros_productos
->id_tipo_filtro :: PRIMARY KEY :: FOREIGN KEY #tipo_filtros->id_tipo_filtro
->id_producto :: PRIMARY KEY :: FOREIGN KEY #productos->id_producto


SLUG es un campo que sirve para pasarlo por la URL, y hacer urls amigables. Por ejemplo, si tengo un producto llamado "Televisión LG de 32'' LX HJ10000-M" su slug debería ser algo como "television-lg-de-32-lx-hj10000-m". Así puedes crear un enlace http://www.mitienda.com/articulos/te...2-lx-hj10000-m que es mucho mejor que http://www.mitienda.com/articulos?id=32 ó http://www.mitienda.com/articulos/32.

La tabla filtros_categoria es donde iría lo de "Marca", "Grupo", "Categoría", etc. Aunque lo mejor sería sacar por lo menos lo de "Categoría" a una talba exclusívamente para ella, porque es muy comú n crear diferentes tipos de "filtros" según la categoría a la que pertenece una familia de artículos. Por ejemplo, para la televisi´´on conviene crear un filtro llamado "Pulgadas", con el tamaño en pulgadas; pero para la categoría "pantalones" ese filtro no sirve de nada. i Categoría fuera una tabla por sí misma, podrías relacionar los tipos de filtros según la categoría a la que pertenecen.

Cuando se tachan diferentes tipos de filtros de diferentes categorías, normalmente se hace un AND entre ellos, y cuando se marcan varias de la misma categoría, se suele hacer un OR. Pero no siempre, así que si acaso te interesa hacer un AND tambien de los filtros marcados del mismo tipo_filtro, para eso se utiliza el campo "tipo_relacion " y decir explícitamente cómo relacionarlos en la consulta.

Implementar todo esto es cosa tuya.