Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/03/2005, 18:43
netoec84
 
Fecha de Ingreso: julio-2004
Ubicación: Quito
Mensajes: 123
Antigüedad: 19 años, 9 meses
Puntos: 0
Pregunta Contar elementos en un directorio

Que tal, tengo un problema, estoy creando un directorio y necesito contar el numero de elementos que esten dentro de una categoria, un elemento puede estar registrado en varias categorias.

La estructura de la tabla de la categorias es:

- id (id de la categoria)
- pid (id de la categoria padre, usado para crear subcategorias)
- nombre (el nombre de la categoria)

El elemento contiene un campo para almacenar la categoria(s):
- categoria (contiene la id de las categorias en las que se listará, si es una sería: x si son 2 o mas sería: x|x2)

El problema es que no logro que todos los niveles de las categorias del directorio muestren el valor del numero de elementos que estan listados en la categoria, tengo echa la siguiente función (uso ADOdb Library)

Código PHP:
function contarNumeroArtistas($categoria)
{
    global 
$conn;
    
$num 0;    

    
$sql "SELECT *
            FROM categorias
            WHERE pid = $categoria"
;
    
$resultado $conn->Execute($sql);
    
$numResultados $resultado->NumRows();
    if(
$numResultados)
    {
        for(
$i=0$i<$numResultados$i++)
        {
            list(
$c_id$c_pid$c_nombre) = $resultado->fields;
            
            
$sql2 "SELECT categoria
                    FROM artista"
;
            
$resultado2 $conn->Execute($sql2);
            
$numResultados2 $resultado2->NumRows();
            if(
$numResultados2)
            {
                for(
$j=0$j<$numResultados2$j++)
                {
                    list(
$art_categoria) = $resultado2->fields;
                    
$categorias explode("|"$art_categoria);
                    for(
$k=0$k<count($categorias); $k++)
                    {
                        if(
$categorias[$k] == $c_id)
                            
$num++;    
                    }
                    
$resultado2->MoveNext();
                }
                
$resultado2->Close();
            }
            
$resultado->MoveNext();
        }
        
$resultado->Close();
    }
    
    
$sql2 "SELECT categoria
            FROM artista"
;
    
$resultado2 $conn->Execute($sql2);
    
$numResultados2 $resultado2->NumRows();
    if(
$numResultados2)
    {
        for(
$j=0$j<$numResultados2$j++)
        {
            list(
$art_categoria) = $resultado2->fields;
            
$categorias explode("|"$art_categoria);
            for(
$k=0$k<count($categorias); $k++)
            {
                if(
$categorias[$k] == $categoria)
                    
$num++;    
            }
            
$resultado2->MoveNext();
        }
        
$resultado2->Close();
    }

    return 
$num;


alguien tiene alguna idea para solucionarlo?

saludos

Última edición por netoec84; 17/03/2005 a las 19:05