назовем файлик tree.php
Код: Выделить всё
<?
// старт счетчика времени генерации дерева
$timeparts = explode(" ",microtime());
//
// Собственно главная функция создающая массив с названиями каталогов
function maketree($rootcatid,$sql,$maxlevel){
global $db;
// 1) ID категории, 2) ID родительской кат, 3) название категории...
// Тут я использую класс (пхпББ) для выполнения запросов к БД, вы можете выполнить их по своему...
$result=$db->sql_query($sql);
while(list($catid,$vcatid,$title)=$db->sql_fetchrow($result)){
$table[$vcatid][$catid]=$title;
$partable[$catid][$vcatid]=$title;
};
$result=makebranch($rootcatid,$table,0,$maxlevel);
RETURN $result;
}
function makebranch($vcatid,$table,$level,$maxlevel){
$list=$table[$vcatid];
asort($list); // сортировка
while(list($key,$val)=each($list)){
if ($level=="0"){
$output="";
}else{
$width=($level+1)*24;
$output.="<img src=e.gif width=$width height=12>";
};
// выходной ХТМЛ (ссылку ессвенно вставляете свою подставляя только $key (id категории)
// $level - по желанию
$result.= "$output $level ::: <a href='index.php?act=saw_cat&catid=$key' title='Просмотр данной категории'> <font size=2> <b>$val</b> </font></a><br>";
if ((isset($table[$key])) AND (($maxlevel>$level+1) OR ($maxlevel=="0"))){
$result.= makebranch($key,$table,$level+1,$maxlevel);
};
};
RETURN $result;
}
// установка категории по умолчанию
if (!isset($catid)){
$catid=0;
};
// $maxlevel - максимальный уровень для показа
// если = 0 то показывать все уровни
$maxlevel=0;
//запрос в функцию тоже вставляете свой
print maketree($catid,"SELECT catid,vcatid, title FROM webze_downloads_cat order by vcatid",$maxlevel);
// время генерации дерева
$starttime = $timeparts[1].substr($timeparts[0],1);
$timeparts = explode(" ",microtime());
$endtime = $timeparts[1].substr($timeparts[0],1);
$totaltime=bcsub($endtime,$starttime,6);
print "<br><font size=\"1\">Дерево каталогов сгенерировано за $totaltime сек.</font>";
?>
вот и все.... изменяем запрос, линк и инклудим данный файл в нужном месте....