<script>
function showMenu(id){
if(document.getElementById("category"+id).style.display=="none"){
document.getElementById("category"+id).style.display="block";
}else{
document.getElementById("category"+id).style.display="none";
}
}
</script>
<?php
//будем считатать что $db_result вернулось от БД
$db_result = array(
array('id'=>1,"parent"=>0,'title'=>'Категория 1','url'=>''),
array('id'=>2,"parent"=>0,'title'=>'Категория 2','url'=>''),
array('id'=>3,"parent"=>0,'title'=>'Категория 3','url'=>''),
array('id'=>4,"parent"=>0,'title'=>'Категория 4','url'=>''),
array('id'=>5,"parent"=>1,'title'=>'Подкатегория 1','url'=>''),
array('id'=>6,"parent"=>1,'title'=>'Подкатегория 2','url'=>'www.yandex.ru'),
array('id'=>7,"parent"=>1,'title'=>'Подкатегория 3','url'=>'www.yandex.ru'),
array('id'=>8,"parent"=>1,'title'=>'Подкатегория 4','url'=>'www.yandex.ru'),
array('id'=>9,"parent"=>2,'title'=>'Подкатегория 1','url'=>'www.yandex.ru'),
array('id'=>10,"parent"=>3,'title'=>'Подкатегория 1','url'=>'www.yandex.ru'),
array('id'=>11,"parent"=>4,'title'=>'Подкатегория 1','url'=>'www.yandex.ru'),
array('id'=>12,"parent"=>5,'title'=>'ПодПодкатегория 1','url'=>'www.yandex.ru'),
array('id'=>13,"parent"=>5,'title'=>'ПодПодкатегория 2','url'=>'www.yandex.ru'),
array('id'=>14,"parent"=>5,'title'=>'ПодПодкатегория 3','url'=>'www.yandex.ru'),
);
//Строим меню
$menu = array();
$link_array = array(); //Массив ссылок на чайлды
foreach ($db_result as $point){
$point['childs'] = array();
$link_array[$point['id']] =& $point['childs'];
if(!$point['parent']){
$menu[$point['id']] = $point;
}else{
$link_array[$point['parent']][$point['id']] = $point;
}
}
function buildMenu($array,$level=0){
foreach ($array as $index=>$element){
echo "<div class='menu'",(!empty($element['childs']))?" onClick='showMenu(\"{$index}\");'>":">",str_repeat("-",$level),(!empty($element['url']))?" <a href='{$element['url']}'>{$element['title']}</a>":$element['title'],"</div>\n";
if(!empty($element['childs'])){
echo "<div id='category{$index}' style='display: none;'>\n";
buildMenu($element['childs'],$level+1);
echo "</div>\n";
}
}
}
buildMenu($menu);
?>