Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Кризис логики или нехватка знаний (MySql)

325
04 февраля 2008 года
Franky
723 / / 10.08.2005
Всем привет!
Выходные просидел над такой проблемой:
есть БД MySql, таблица названий разделов (raz). Структура:
id (auto_increment), id_r (привязка подраздела к ID раздела или 0 если корень), naz (название)

Более грамотной структуры придумать не смог. Но проблема с выводом на экран.
делаю (пишу по памяти):
$id_r=0;
SELECT * FROM `raz` WHERE `id_r`=$id_r;

Из этого нет проблем вывести "корень" разделов, а вот с вложенностью проблемы. В цикле получилось: либо "корень", либо вложения.

Подскажите, плиз, как решить сею буриданову диалему! :)
6.0K
04 февраля 2008 года
merlex
78 / / 25.02.2006
вывести на экран что? Если надо дерево надо рекурсию делать

типа ....

Код:
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,"--");
325
05 февраля 2008 года
Franky
723 / / 10.08.2005
Спасибо, я до признака директории не догадался :)
6.0K
05 февраля 2008 года
merlex
78 / / 25.02.2006
Цитата: Franky
Спасибо, я до признака директории не догадался :)



на самом денле можно и без него .... печатать название и ПОТОМ рекурсивно вызывать функцию .....

типа пустой массив потомков всеравно функция не выведет...

но так просто быстрей немного .... если это явно не дирректория, не надо и функцию вызывать .....

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог