Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Построение дерева категорий


Автор: ZloiKombat 18.7.2013, 14:07
Доброго времени суток форумчане.
Помогите пожалуйста решить вот такую задачу.
Есть дерево категорий, которое выводится с виде многоуровнего списка с помощью <ul><li></li></ul>

Здесь все подробно с примерами написано
http://phpdes.com/php/postroenie-dereva-kategorijj-na-php-rekursiya/

Работает все отлично, но есть загвоздка.
Мне нужно что бы функция которая в примере выводила многоуровневый список строя его НЕ с помощью <ul><li></li></ul>, а например с помощью пробелов &emsp;
То есть: раздел - нет пробелов, подраздел - 1 пробел, подподраздел - 2 пробела, подподподраздел - 3 пробела и т.д.

Пожалуйста помогите решить эту задачку, буду благодарен! 

Автор: Sanchezzz 18.7.2013, 14:21
Вычитывайте уровень вложенности $level

Каждая итерация в глупь +1, на выходе из рекурсии -1, предварительно делаем проверку если $level < 1 то level=1
при выводе названия категории используем функцию str_repeat
примерно так 
Код

echo str_repeat('&nbsp;',$level). $name_cat ;

Автор: ZloiKombat 18.7.2013, 14:35
Цитата(Sanchezzz @ 18.7.2013,  14:21)
Вычитывайте уровень вложенности $level

Каждая итерация в глупь +1, на выходе из рекурсии -1, предварительно делаем проверку если $level < 1 то level=1
при выводе названия категории используем функцию str_repeat
примерно так 
Код

echo str_repeat('&nbsp;',$level). $name_cat ;

Спасибо за то что откликнулись.
Я не профи в программировании, не могли бы вы написать эту функцию с вашими правками, я не совсем понимаю как сделать то что вы сказали.
Заранее спасибо!

Автор: Sanchezzz 18.7.2013, 14:50
Код

function build_tree($cats, $parent_id = 0 , $level = 0){
    if(isset($cats[$parent_id])){
        $level++;
        foreach($cats[$parent_id] as $cat){
            $tree.= str_repeat('&nbsp;',$level) . $cats['name'];
            $tree.=  build_tree($cats,$cat['id'],$level);  
        }
    }else{
        $level--;
        return '';
    }
    return $tree;
}

Остальное со статьи возьмете, нечего трудного 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)