function printtree($id,$pref=""){
$list = /* здесь в массив забиваются все элементы с id_r=$id*/;
for ($i=0;$i<count($list); $i++;){
if ($list['isdir']){ // придется ввести в таблице поле - признак директории
$out.=printtree($list[$i]['id'], $pref.$pref);
} else {
$out.=$pref.$list[$i]['naz']
}
}
}
printtree(0,"--");
Кризис логики или нехватка знаний (MySql)
Выходные просидел над такой проблемой:
есть БД MySql, таблица названий разделов (raz). Структура:
id (auto_increment), id_r (привязка подраздела к ID раздела или 0 если корень), naz (название)
Более грамотной структуры придумать не смог. Но проблема с выводом на экран.
делаю (пишу по памяти):
$id_r=0;
SELECT * FROM `raz` WHERE `id_r`=$id_r;
Из этого нет проблем вывести "корень" разделов, а вот с вложенностью проблемы. В цикле получилось: либо "корень", либо вложения.
Подскажите, плиз, как решить сею буриданову диалему! :)
вывести на экран что? Если надо дерево надо рекурсию делать
Спасибо, я до признака директории не догадался :)
Цитата: Franky
Спасибо, я до признака директории не догадался :)
на самом денле можно и без него .... печатать название и ПОТОМ рекурсивно вызывать функцию .....
типа пустой массив потомков всеравно функция не выведет...
но так просто быстрей немного .... если это явно не дирректория, не надо и функцию вызывать .....