Merhaba, senin için 4-5 dakikamı ayırarak fonksiyon yazdım, anlattığın hiyeraşik yapı derin olduğu için sistem döngü içinde bir kaç işlem ile çalışıyor, kodlar karışık görünebilir.

function kat_sirala($kat_sef, $kat_id = NULL)
{
    $sira_ayrac = '=>';
    
    if ($kat_sef <> NULL)
        $kosul = sprintf("kat_sef = '%s'", $kat_sef);
    else
        $kosul = sprintf("kat_id = '%s'", $kat_id);
         
    $kat = mysql_fetch_array(mysql_query("SELECT * FROM kat WHERE {$kosul}"));
    $katlist[] = $kat['kat_adi'];
    
    for ($i = 0; $i < 10; $i++) {
        if (!is_array($katidlist)) 
            $ustkatid = $kat['ustkat_id'];
         else {
            if (!$katidlist[1]) {
                $ustkatid = $katidlist[0];
            } else {
                $ustkatid = $katidlist[count($katidlist) - 1];
            }
        }
        if ($ustkatid == 0) 
            break;
        else {
            $kat = mysql_fetch_array(mysql_query("SELECT * FROM kat WHERE kat_id = '" . $ustkatid . "'"));
            $katlist[]   = $kat['kat_adi'];
            $katidlist[] = $kat['ustkat_id'];
        }
    }
    for ($i = count($katlist) - 1; $i >-1; $i--) {
        $kliste[] = $katlist[$i];
    }
    $anasayfa = "Anasayfa {$sira_ayrac} ";
    $sira     = join(" {$sira_ayrac} ", $kliste);
    
    if ($sira <> NULL) {
        return $anasayfa . $sira;
    }
    return FALSE;
}
kullanım;
// http://xxx.com/?katsef=fsef
if ($_GET['katsef'])
{
    echo kat_sirala($_GET['katsef']);
}
çıktı;
Anasayfa => aaa => bbb => ddd => fff
bazı kısımları kendine göre değiştirebilirsin mesela $sira_ayrac değişkenini. kolay gelsin.