<?php
function MakeTree(&$Page,&$Name,$Myqsl){
$result=mysql_query("SELECT * FROM tabela ORDER BY Name");
$table[$Parent][$ID]=$Name;
$partable[$ID]=$Parent;
$Folder[$ID]=$Folder0;
};
$levels=TreeLevels(0,$table,0);
$Name=$Folder[$Page]["Name"];
if($Page==0){
$results.=TreeExpand(0,$table,$partable,$Folder,$Page,0,1); // 1 na koncu oznacza rozwiniecie do 1 poziomu
}
else{
$ID=$Page;
$results.=TreeNodes($ID,$table,$partable,$Folder,$Page,$levels);
}
return $results;
}
function TreeLevels($Parent,$table,$level){
$_SESSION["levels"][$Parent]=$level;
while(list
($key,$val)=@each($table[$Parent])){
if (isset($table[$key])){
TreeLevels($key,$table,$level+1);
}
}
return $_SESSION["levels"];
}
function TreeNodes($ID,$table,$partable,$Folder0,$Page,$levels){
$rez0="";
$imgwidth="<li style='margin-left:".(($levels[$ID])*10)."px;'>";
$lisd=$table[$ID];
$ID0=$ID;
$fiplevel=$levels[$ID];
while(list
($key,$val)=each($lisd)){
if($Page==$key){
$rez0.=$imgwidth."<a href='?Page=".$Folder0[$key]["ID"]."'>".$Folder0[$key]["Name"]."</a></li>";
}
else{
$rez0.=$imgwidth."<a href='?Page=".$Folder0[$key]["ID"]."'>".$Folder0[$key]["Name"]."</a></li>";
}
}
}
$res="";
while ($ID!=0) {
$fip=$partable[$ID];
$fiplevel=$levels[$fip];
$fiplist=$table[$fip];
$imgwidth="<li style='margin-left:".(($fiplevel)*10)."px'>";
$rez="";
while(list
($key,$val)=@each($fiplist)){ if($Page==$key){
$rez.=$imgwidth."<a href='?Page=".$Folder0[$key]["ID"]."'><i>".$Folder0[$key]["Name"]."</i></a></li>".$rez0;
}
else{
$rez.=$imgwidth."<a href='?Page=".$Folder0[$key]["ID"]."'>".$Folder0[$key]["Name"]."</a></li>";
}
if($ID==$key){
$rez.=$res; $res="";
}
}
$res.=$rez;
$ID=$partable[$ID];
}
return $rez;
}
function TreeExpand($Parent,$table,$partable,$Folder0,$Page,$level,$levelexpand){
$list=$table[$Parent];
$width=($level)*10;
$result='';
while(list
($key,$val)=@each($list)){
if($level < $levelexpand){
$result.="<li style='margin-left:".$width."px;'><a href='?Page=".$Folder0[$key]["ID"]."'>".$Folder0[$key]["Name"]."</a></li>";
}
if (isset($table[$key])){
$result.=TreeExpand($key,$table,$partable,$Folder0,$Page,$level+1,$levelexpand);
}
}
return $result;
}
print MakeTree
($Page,$Name,$Myqsl); ?>
Ten kod powinien Cię zadowolić. Tabela ma strukturę ID, Name, Parent - gdzie ID, to wiadomo, Name to nazwa w Twoim przypadku działu, a Parent, to ID jednostki nadrzędnej (rodzica). Dodaj tylko połączenie z bazą, dopasuj do swoich nazw w tabeli i będzie śmigało, że aż miło. Jak by co, to pisz...