Foros del Web » Programando para Internet » PHP »

Agrupar resultados por categorias

Estas en el tema de Agrupar resultados por categorias en el foro de PHP en Foros del Web. Saludos Estoy terminando un catalogo de productos pero me estoy fijando que debo agrupar los resultados de dichos productos por categoria Mis tablas son Categoria ...
  #1 (permalink)  
Antiguo 08/03/2013, 04:26
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Agrupar resultados por categorias

Saludos
Estoy terminando un catalogo de productos pero me estoy fijando que debo agrupar los resultados de dichos productos por categoria
Mis tablas son
Categoria
id
id_marca
nombre

Productos
id
d_marca
id_cat
titulo
contenido
img

y al extraer los prodcutos deberian aparecer de la siguiente manera

Categoria 1
Producto 1
Producto 2
Producto 3
Producto 4

categoria 2
Producto 1
Producto 2
Producto 3

Categoria 3
Producto 1
Producto 2
Producto 3


alguien me podria explicar como lograr eso??? ..

Código PHP:
@$marca=$_REQUEST['id'];
queryselect FROM categorias WHERE id_marca $marca ORDER BY nombre ASC;
$nombre $row['nombre']; 
aqui llamo a mis categorias segun la marca seleccionada y luego deberia ser

Código PHP:
queryselect FROM productos WHERE id_marca $marca GROUP BY $nombre
Primero no se si este en lo correcto con la consulta... segundo, esa consulta va dentro del while del primer query?? donde imprimo dichos resultados
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #2 (permalink)  
Antiguo 08/03/2013, 06:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Agrupar resultados por categorias

Todo en una consulta


Código PHP:
Ver original
  1. $db = new mysqli(...datos conexión...);
  2. /* check connection */
  3. }
  4. $result = $db->query("SELECT c.id diCat,".
  5.                         "c.nombre nombre_cat,".
  6.                         "p.id idPrd,".
  7.                         "p.id_marca,".
  8.                         "p.titulo,".
  9.                         "p.contenido,".
  10.                         "p.img ".
  11.                         "FROM Productos p INNER JOIN Categoria c ".
  12.                         "WHERE p.id_marca = ".$marca." ".
  13.                         "ORDER BY c.nombre,p.titulo;");
  14. if($result){
  15.      // Cycle through results
  16.     $cat="";
  17.      while ($row = $result->fetch_object()){
  18.         if($cat!=$row["nombre_cat"]){
  19.               echo "<br />".$row["nombre_cat"]."<br />";
  20.               $cat=$row["nombre_cat"];
  21.        }
  22.         echo $row["titulo"]."<br />";
  23.     }
  24.     // Free result set
  25.     $result->close();
  26.     $db->close();
  27. }

He supuesto que titulo es el nombre del producto.

Y he filtrado sobre la marca de producto, coreo que es un error hacerlo sobre la marca de categoria... de hecho tener una marca en la categoria parece raro....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 08/03/2013, 06:29
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Agrupar resultados por categorias

bueno es q o sea tengo productos q se gian por marcas... entonces... cuando das click sobre una marca se despliegan las categorias de los productos y los productso q hay por cada categoria en esa marca... pero se puede cambiar esa estructura.. q me recomiendas hacer???

fijate... www.importmedica.com/pruebas

no des click pues no tengo arriba todo... solo el index y algunas secciones incompletas

edito y corrijo a ver si estoy en lo cierto

lo correcto seria eliminar el id_marca de la tabla categorias y llamar a los productos que posen dicha id_marca y que entren en X categoria cierto?
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...

Última edición por T4ke0veR; 08/03/2013 a las 06:45
  #4 (permalink)  
Antiguo 08/03/2013, 06:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Agrupar resultados por categorias

Si quieres ver las categorias de una marca

Código MySQL:
Ver original
  1. SELECT c.id diCat,
  2.             c.nombre nombre_cat
  3. FROM Categoria c INNER JOIN Productos p ON c.id=p.id_cat
  4. WHERE p.id_marca = $marca
  5. GROUP BY c.id diCat,c.nombre
  6. ORDER BY c.nombre;

Supongamos que "premium" es una categoria, puede haber productos "premium" de n marcas.... Con tu modelo en la tabla categoria tendrias n veces la categoria "premium" con mi modelo solo una....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: agrupar, categorias, resultados, select, tabla
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 00:14.