функция сам себя() или менюшка

WMix

герр M:)ller
Партнер клуба
функция сам себя() или менюшка

PHP:
// база меню 
$menu=array( 
1=>array(  "name"=>"level_1"   ,  "wurzel"=>"0"),
2=>array(  "name"=>"level_2"   ,  "wurzel"=>"0"),
3=>array(  "name"=>"level_21"  ,  "wurzel"=>"2"),
4=>array(  "name"=>"level_22"  ,  "wurzel"=>"2"),
5=>array(  "name"=>"level_221" ,  "wurzel"=>"4"),
6=>array(  "name"=>"level_222" ,  "wurzel"=>"4"),
7=>array(  "name"=>"level_23"  ,  "wurzel"=>"2"),
8=>array(  "name"=>"level_3"   ,  "wurzel"=>"0"),
9=>array(  "name"=>"level_4"   ,  "wurzel"=>"0"),
10=>array( "name"=>"level_5"   ,  "wurzel"=>"0"),
11=>array( "name"=>"level_6"   ,  "wurzel"=>"0"),
12=>array( "name"=>"level_7"   ,  "wurzel"=>"0"),
13=>array( "name"=>"level_8"   ,  "wurzel"=>"0"),
14=>array( "name"=>"level_9"   ,  "wurzel"=>"0"),
15=>array( "name"=>"level_91"  ,  "wurzel"=>"14"),
16=>array( "name"=>"level_92"  ,  "wurzel"=>"14")
);


// функция скрытия
function must_open($arr,$index,$m_open)
{
	if ($arr[$index]["wurzel"]==$m_open || must_open($arr,$index,$arr[$m_open]["wurzel"]) || $arr[$index]["wurzel"]==0)
	{
		return true;
	}
	else
	{
		return false;
	}
}

// функция распечатки
function make_tree($arr,$zeile,$level,$open)
{

	for ($i=1; $i<17; $i++) // на длину масива
	{
		if ($arr[$i]["wurzel"]==$zeile) // у каждого элемента ищем под элемент 
		{
		
			$abst="";
			if(must_open($arr,$i,$open)){ // *del*надо ли его печатать?			
				for ($a=1; $a<=$level; $a++)// и если да  делаем ратояние
				{
					$abst.="--";
				}
				echo "<a href='menu.php?opene=".$i."'>".$abst.$arr[$i]["name"]."</a><br>";
				make_tree($arr,$i,$level+1,$open);// и находим под элементы
			}//*del*
		}
	}
}

if (!$opene)
	$opene="0";

make_tree($menu,0,0,$opene);

вроде понятно. просто менюшка, каждый новый элемент может быть вставлен в конце масива при этом не имеет значения где в меню он должен распологаться( в смысле под чем)

проблема в следующем.

функция must_open() работает не правильно
она сжерает низ меню

скажем если убрать из функции make_tree() поля с '*del*'
прог распечатает все элементы ( элементов нажатого до корня ну типа как в проводнеке но проще)
 

Макс

Старожил PHPClub
может немного не в тему но посмотри
pear :: html :: treeMenu
(строит древовидное dhtml-меню - имхо очень удобна).
А твои 2 кБ кода никто смотреть не будет (имхо)
 

WMix

герр M:)ller
Партнер клуба
я обязательно попробую но хочется самому
 
Сверху