Foros del Web » Programando para Internet » PHP »

Mostrar resultados por categorías y contador

Estas en el tema de Mostrar resultados por categorías y contador en el foro de PHP en Foros del Web. Buenos días! Tengo un problema tratando de mostrar resultados por categorías, probé de varias maneras con COUNT y GROUP BY pero no encuentro la forma ...
  #1 (permalink)  
Antiguo 09/12/2014, 07:09
 
Fecha de Ingreso: diciembre-2014
Mensajes: 2
Antigüedad: 9 años, 11 meses
Puntos: 0
Mostrar resultados por categorías y contador

Buenos días!

Tengo un problema tratando de mostrar resultados por categorías, probé de varias maneras con COUNT y GROUP BY pero no encuentro la forma correcta de usarlos, y me rompí la cabeza con la recursividad.

Lo que quiero seria algo similar a esto:

Indumentaria (60)
- Ropa (30)
- Zapatos (30)

Alimentos (15)
- Carnes (5)
- Frutas (5)
- Verduras (5)

Estas son las dos tablas que asocio:

Categorias
- id
- nombre
- id_padre

Productos
- id
- titulo
- idCat <= Id que se asocia a la tabla categorías

Son tres niveles de categorías y no seria algo muy complejo.

Si me dan una mano con esto estaría muy agradecido.
  #2 (permalink)  
Antiguo 09/12/2014, 07:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Mostrar resultados por categorías y contador

Primero muestra cómo es la consulta o consultas que has estado probando, recordando que en este subforo tratamos sólo SQL (leer las normas del foro).
Si el problema lo tienes al vsualizar en pantalla, sería para el foro del lenguaje que usas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 09/12/2014, 08:34
 
Fecha de Ingreso: diciembre-2014
Mensajes: 2
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Mostrar resultados por categorías y contador

Tenes toda la razon gnzsoloyo, si algún moderador puede mover el tema al foro de php,

Este es el código que utilizo, pero solo funciona cuando $categoria es 0 porque no encuentra resultados con categorías intermedias o finales

Código PHP:

<?php
$categoria 
"0";

$consulta_0 "SELECT *, COUNT(p.idProducto) FROM productos as p INNER JOIN categorias as c3 ON p.idCat=c3.id 
INNER JOIN categorias as c2 ON c3.id_padre=c2.id INNER JOIN categorias as c1 ON c2.id_padre=c1.id 
WHERE c1.id_padre='"
.$categoria."' GROUP BY c1.nombre ORDER BY COUNT(p.idProducto) DESC";
$resultados_0 mysql_query($consulta_0);

while (
$row_0 mysql_fetch_assoc($resultados_0))
{
    echo 
$row_0['nombre'];

$consulta_1 "SELECT *, COUNT(p.idProducto) FROM productos as p INNER JOIN categorias as c3 ON p.idCat=c3.id 
INNER JOIN categorias as c2 ON c3.id_padre=c2.id WHERE c2.id_padre='"
.$row_0['id']."' 
GROUP BY c2.nombre ORDER BY COUNT(p.idProducto) DESC"
;
$resultados_1 mysql_query($consulta_1);

    while (
$row_1 mysql_fetch_assoc($resultados_1))
    {
        echo 
"-".$row_1['nombre']." (".$row_1['COUNT(p.idProducto)'].")";
    }
}
?>
Esto me muestra algo así ... solo si encuentra resultados:

Alimentos
- Carnes (3)
- Verduras (7)
- Frutas (2)

Pero al pasarle el id de carnes no funcionaria ... y quiero q me muestre algo así

Carnes
- Cortes especiales (2)
- Embutidos (1)

Muchas gracias por la correccion

Última edición por gnzsoloyo; 09/12/2014 a las 08:46
  #4 (permalink)  
Antiguo 09/12/2014, 08:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Mostrar resultados por categorías y contador

Movido a PHP.
__________________
¿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: contador, mysql, resultados, 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 22:38.