Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
BlacKCheT
Лучше не лучше, но лучше.
7 / 6 / 2
Регистрация: 11.03.2018
Сообщений: 191
1

Рекурсивный вывод категорий

14.01.2019, 20:52. Просмотров 778. Ответов 12

Есть рекурсивная функция, которая выводит меню(категории и подкатегории). Как выровнить ее по горизонтали? Пытался сделать с Submenu(ul) но не особо получилось.. Сейчас все вот так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function build_tree($cats,$parent_id,$only_parent = false){
    if(is_array($cats) and isset($cats[$parent_id])){
        $tree = '<ul>';
        if($only_parent==false){
            foreach($cats[$parent_id] as $cat){
                $tree .= '<li>'.$cat['name'].' #'.$cat['id'];
                $tree .=  build_tree($cats,$cat['id']);
                $tree .= '</li>';
            }
        }elseif(is_numeric($only_parent)){
            $cat = $cats[$parent_id][$only_parent];
            $tree .= '<li>'.$cat['name'].' #'.$cat['id'];
            $tree .=  build_tree($cats,$cat['id']);
            $tree .= '</li>';
        }
        $tree .= '</ul>';
    }
    else return null;
    return $tree;
}
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<ul>
    <li>Раздел 1
        <ul>
            <li>Раздел 1.1
                <ul>
                    <li>Раздел 1.1.1</li>
                </ul>
            </li>
            <li>Раздел 1.2</li>
        </ul>
    </li>
    <li>Раздел 2
        <ul>
            <li>Раздел 1.1</li>
            <li>Раздел 1.2</li>
        </ul>
    </li>
    <li>Раздел 3
        <ul>
            <li>Раздел 3.1</li>
        </ul>
    </li>
</ul>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2019, 20:52
Ответы с готовыми решениями:

Рекурсивный вывод категорий из таблицы
Есть таблица: cat_id | parent_id | name 1 | 0 | category1 2 | 1 |...

Вывод категорий
Вообще хочу реализовать вывод статей по категории, но я хз как сделать. Вообще можно через id...

Правильный вывод категорий
Здравствуйте! Вывожу категории таким методом. $cat_id = isset( $_GET ) ? intval( $_GET ) : 0;...

Вывод категорий в меню
Всем привет! Есть таблица &quot;Категории&quot;, которая содержит 3 поля: id_kat, Название категории,...

Вывод категорий и подкатегорий
Приветствую, господа! Нужна помощь! Есть код: while($result1 =...

12
Jodah
Эксперт PHP
2911 / 2527 / 1070
Регистрация: 01.08.2012
Сообщений: 8,932
14.01.2019, 20:57 2
Смотрите свойства margin и padding в CSS.
0
BlacKCheT
Лучше не лучше, но лучше.
7 / 6 / 2
Регистрация: 11.03.2018
Сообщений: 191
14.01.2019, 21:04  [ТС] 3
Немного неправильно описал вопрос.. Сейчас категории и подкатегории выводятся вертикально, а мне нужно сделать горизонтальное меню с "выпадашками" как на скриншоте.. сложность в рекурсии и задав ul float:left особо погоды не сделало..
0
Миниатюры
Рекурсивный вывод категорий  
Jodah
Эксперт PHP
2911 / 2527 / 1070
Регистрация: 01.08.2012
Сообщений: 8,932
14.01.2019, 21:12 4
BlacKCheT, "горизонтальное выпадающее меню jquery" в гугле выдаст кучу результатов, например:
http://sitear.ru/material/gorizontalnoe-vypadayushchee-menyu-na-jquery
0
BlacKCheT
Лучше не лучше, но лучше.
7 / 6 / 2
Регистрация: 11.03.2018
Сообщений: 191
14.01.2019, 21:22  [ТС] 5
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$tree = "<ul class=\"menu\">";
        if($only_parent==false){
            foreach($cats[$parent_id] as $cat){
                $tree .= '<li>';
                $tree = "<ul class=\"submenu\">";
                $tree .= '<li>';
                $tree .= "<a href=\"/?module=products&action=index&category=$cat[id]\" class=\"text-mutted\">$cat[name]</a>";
                $tree .= '</li>';
                $tree .= '</ul>';
                $tree .= '</li>';
                $tree .=  build_tree($cats,$cat['id']);
            }
Я пытался переделать на такую структуру, но не особо результативно..
0
Jodah
Эксперт PHP
2911 / 2527 / 1070
Регистрация: 01.08.2012
Сообщений: 8,932
14.01.2019, 21:28 6
BlacKCheT, а смысл? Ваш вопрос решается стилями, структуру HTML можно не трогать.
0
BlacKCheT
Лучше не лучше, но лучше.
7 / 6 / 2
Регистрация: 11.03.2018
Сообщений: 191
14.01.2019, 21:42  [ТС] 7
Как?) Если у меня ul внутри которого ul с таким же классом?
0
BlacKCheT
Лучше не лучше, но лучше.
7 / 6 / 2
Регистрация: 11.03.2018
Сообщений: 191
14.01.2019, 21:48  [ТС] 8
DOM
0
Миниатюры
Рекурсивный вывод категорий  
Jodah
Эксперт PHP
2911 / 2527 / 1070
Регистрация: 01.08.2012
Сообщений: 8,932
14.01.2019, 21:58 9
BlacKCheT, как писал выше, берём из гугла готовые стили и переделываем под себя.

Цитата Сообщение от BlacKCheT Посмотреть сообщение
внутри которого ul с таким же классом?
В коде из 1-го поста нет классов. Но даже если есть, кто мешает переписать?
CSS
1
2
3
4
5
6
7
.menu {
    /**/
}
 
.menu .menu {
    /**/
}
0
BlacKCheT
Лучше не лучше, но лучше.
7 / 6 / 2
Регистрация: 11.03.2018
Сообщений: 191
14.01.2019, 22:20  [ТС] 10
не очень получилось)))))
0
Миниатюры
Рекурсивный вывод категорий  
BlacKCheT
Лучше не лучше, но лучше.
7 / 6 / 2
Регистрация: 11.03.2018
Сообщений: 191
15.01.2019, 00:17  [ТС] 11
У вас получилось?
0
Jodah
Эксперт PHP
2911 / 2527 / 1070
Регистрация: 01.08.2012
Сообщений: 8,932
15.01.2019, 16:20 12
Можно взять меню отсюда:
https://ruseller.com/lessons.php?id=941&

Добавил туда несколько вложенных списков:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<li>
    <a href="#" title="Что мы можем для вас сделать">Услуги</a>
    <ul>
        <li><a href="#">Услуга один</a></li>
        <li><a href="#">Услуга два</a></li>
        <li><a href="#">Услуга три</a></li>
        <li><a href="#">Услуга четыре</a></li>
        <ul>
            <li>
                <a href="#">Услуга пять</a>
                <ul>
                    <li>
                        <a href="#">Услуга шесть</a>
                        
                        <ul>
                            <li><a href="#">Услуга семь</a></li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </ul>
</li>
И отображается нормально.
1
BlacKCheT
Лучше не лучше, но лучше.
7 / 6 / 2
Регистрация: 11.03.2018
Сообщений: 191
15.01.2019, 16:34  [ТС] 13
Я тоже только что нашел решение, сделав так:

PHPHTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function build_tree($cats,$parent_id,$only_parent = false){
    if(is_array($cats) and isset($cats[$parent_id])){
        $tree = "<ul class=\"menu\">";
        if($only_parent==false){
            foreach($cats[$parent_id] as $cat){
                $tree .= '<div>';
                $tree .= '<li>';
                $tree .= "<a href=\"/?module=products&action=index&category=$cat[id]\" class=\"text-mutted\">$cat[name]</a>";
                $tree .= '</li>';
                $tree .=  build_tree($cats,$cat['id']);
                $tree .= '</li>';
                $tree .= '</div>';
            }
        }elseif(is_numeric($only_parent)){
            $cat = $cats[$parent_id][$only_parent];
            $tree .= '<li>'.$cat['name'].' #'.$cat['id'];
            $tree .=  build_tree($cats,$cat['id']);
            $tree .= '</li>';
        }
        $tree .= '</ul>';
    }
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
.menu div{
float: left;
}
 
.menu .menu div{
float: none;
display: none;
position: absolute;
width: 100%;
min-width: 200px;
top: 37px;
left: 0;
background-color: white;
}
0
15.01.2019, 16:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2019, 16:34

Вывод названия категорий
Имеется две таблицы, в первой имя и catid категории, а второй сам пост, где в одном из столбцов...

Вывод категорий в боковое меню
Привет всем, столкнулся с такой проблемой - не выводятся категории в меню, делал все по примеру (по...

Простейший вывод категорий сайта через GET
Привет, хочу чтобы при переходе по ссылке категории я получал на страничке сообщение с именем ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru