Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/05/2011, 16:13
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 10 meses
Puntos: 344
Respuesta: Mostrar registros desde BD por Categorías

El problema es la 2ª consulta SQL que realizas.

Cuando le dices group by no es que te devuelve la tabla ordenada por el idCategoria, sino que te intenta agrupar todas las filas que tienen la misma categoría, es decir, con un ejemplo:


idCategoria iditem

1 1
1 2
2 3
2 4
3 5
3 6

Con el group by quedarían:


idCategoria
1
2
3

Tu lo que necesita es utilizar ORDER BY idCategoria


Quedaría así:

Código PHP:
Ver original
  1. // traemos listado de categorias
  2. $arrCategorias = array();
  3. $query = "SELECT idCategoria, valor FROM `categorias` ORDER BY valor ASC";
  4. $resultado = mysql_query ($query, $dbConn);
  5. while ( $row = mysql_fetch_assoc ($resultado)) {
  6.     array_push( $arrCategorias,$row );
  7. }
  8.  
  9. // traemos listado de items
  10. $arrItems = array();
  11. $query = "SELECT * FROM `items` ORDER BY idCategoria ASC";
  12. $resultado = mysql_query ($query, $dbConn);
  13. while ( $row = mysql_fetch_assoc ($resultado)) {
  14.     array_push( $arrItems,$row );
  15. }


Aun así no funcionaría bien porque lo que tendrías es un array con todos los items.

Hay varias formas de solucionarlo, la más sencilla pero más costosa en rendimiento es hacer una consulta por cada categoría
y la más complicada pero quizás más rápida es hacer lo de arriba pero controlando cuando llegas al final de cada categoría en el array.


Espero que te haya quedado algo claro.

1. O

Última edición por alexg88; 02/05/2011 a las 16:19