Qui una funzione ricorsiva (suggeritami a suo tempo) che ti consente di inserire in un array l'interna struttura di una gerarchia di elementi a DB.
Codice PHP:
<?
    
function get_categorie($id_principale)
    {
        
$array = array();
            
        
$sql "SELECT * FROM downcat WHERE id_principale = '$id_principale'";
        
$res mysql_query($sql);
        while (
$row mysql_fetch_assoc($res))
        {
            
$array$row['id_cat'] ] = array(
                
'nome'                 => $row['nome'],
                
'sottocategorie'     => get_categorie($row['id_cat']
            );
        }
        
        return 
$array;
    }
    
    
$array get_categorie(0);
?>