Форум программистов, компьютерный форум, киберфорум
PHP: Фреймворки
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/26: Рейтинг темы: голосов - 26, средняя оценка - 4.96
 Аватар для Евген
7 / 7 / 0
Регистрация: 03.04.2012
Сообщений: 44

подкатегории в codeigniter

14.10.2012, 17:52. Показов 4959. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, столкнулся с проблемой в codeigniter при создании меню->подменю, до работы в codeigniter создавал двиг сам, алгоритм подменю выглядел так...
в mysql было 2 таблицы 1 с категориями:
kat_name url
вторая с подкатегориями:
kat_name id_pod_kat_name url

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<ul><?php foreach("массив с категориями" as $key => $value):?><li><a href="<?=$key?>"><?=$value?>/*где key = url, a value = название элемента меню*/</a>
 
<? тут запрос к базе типа "SELECT id_pod_kat_name,url FROM pod_kat WHERE kat_name = {$value}"
 
 if(если в базе не нашлось такого,  то подкатегории пусты) ?>
<?php тут аналогичный foreach как и с выводом просто категорий ?>
   <ul>
      <li><a href="<?=$key?>"><?=$value?>/*где key = url, a value = название элемента меню*/</a>
   </ul>
<?endforeach?>
<? endif;>
 
</li><? endforeach;?></ul>
так вот, это всё работало, а как сделать аналогично в codeigniter 2.1.2?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.10.2012, 17:52
Ответы с готовыми решениями:

подкатегории меню
Помогите исправить было обычное Меню со скрытым подменю, но когда я подключил категории с базы данных, у меня подкатегории открылись. на...

подкатегории (css)
Здравствуйте,подскажите пожалуйста как реализовать подкатегории в dle. скриншот: HTML: &lt;!-- Блок --&gt; ...

Подкатегории в Zoo
Ребят, делаю сайт для магазина. Столкнулась с такой проблемой. Решила сделать каталог товаров с помощью компонента Zoo. Структура должна...

29
 Аватар для Евген
7 / 7 / 0
Регистрация: 03.04.2012
Сообщений: 44
15.10.2012, 19:55  [ТС]
Студворк — интернет-сервис помощи студентам
Кликните здесь для просмотра всего текста

Array
(
[0] => Array
(
[id] => 4
[pod_id] => 0
[name_menu] => главная
[url] => http://iosckity.ru
)

[1] => Array
(
[id] => 5
[pod_id] => 0
[name_menu] => контакты
[url] => http://iosckity.ru/pages/kontakts
)

[2] => Array
(
[id] => 6
[pod_id] => 4
[name_menu] => подконтакты
[url] => #
)

)

блин прошу прощения за такой может глупый вопрос, я в программировании не ас... как вывести из этого массива все с pod_id = 0..

PHP
1
2
3
4
foreach($dataa as $key){
            echo $key['name_menu']."<br>";      
            
            }
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
15.10.2012, 20:02
PHP
1
2
3
4
5
6
foreach($dataa as $key)
{
if (!$key['pod_id'])    
echo $key['name_menu']."<br>";      
            
}
1
 Аватар для Евген
7 / 7 / 0
Регистрация: 03.04.2012
Сообщений: 44
15.10.2012, 20:11  [ТС]
вай спасибо)) ууу чёт я тугадум...

Добавлено через 7 минут
fa2m, а как вывести именно те подкатегории которые принадлежат именно к этой категории... ?
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
15.10.2012, 20:18
Если я правильно понял Ваш вопрос (что-то я сомневаюсь ) то так:
Цитата Сообщение от fa2m Посмотреть сообщение
PHP
1
2
3
4
5
6
foreach($dataa as $key)
{
if (!$key['id'])    
echo $key['name_menu']."<br>";      
            
}
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
15.10.2012, 21:35
Вот функция которая из ваших полей соберёт массив с подкатегориями.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function get_tree( $res )
{
    $tree = array(); $data = array();
 
    while($item = mysql_fetch_array($res)){
        $item['subitems'] = array();
        $data[ $item['id'] ] = $item;
    }
    
    foreach( $data as &$item )
        if( array_key_exists( $item['pod_id'], $data )  )
            $data[ $item['pod_id'] ]['subitems'][ $item['id'] ] =& $item;
        else
            $tree[ $item['id'] ] =& $item;
    
    return $tree;
}
вызывать её передавая ресурс бд.

PHP
1
2
3
4
// выбираете все записи с базы
$res = mysql_query('select * from category');
// вызываете функции для формирования дерева
$tree = get_tree( $res );
дальше ресурс не нужен, можно освободить
PHP
1
mysql_free_result( $res );
в $tree у вас будет массив вида
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Array
(
    [4] => Array
        (
            [id] => 4
            [pod_id] => 0
            [name_menu] => главная
            [url] => http://iosckity.ru
            [subitems] => Array
                (
                )
 
        )
 
    [5] => Array
        (
            [id] => 5
            [pod_id] => 0
            [name_menu] => контакты
            [url] => http://iosckity.ru/pages/kontakts
            [subitems] => Array
                (
                    [6] => Array
                        (
                            [id] => 6
                            [pod_id] => 5
                            [name_menu] => подконтакты
                            [url] => #
                            [subitems] => Array
                                (
                                )
 
                        )
 
                )
 
        )
 
)


Выводить можно рекурсией, например так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// пишите рекурсивную функцию для формирования HTML кода меню
// эта функция сформирует бесконечно вложенное меню, нетолько 2 уровня
function Tree2HTML( &$tree )
{
    $html =  '<ul>';
    foreach( $tree as &$item ){
        $html .=  '<li><a href="'.$item['url'].'">'.$item['name_menu'].'</a>';
        if( ! empty($item['subitems']) )
            $html .=  Tree2HTML( $item['subitems']);
        $html .=  '</li>';
    }
    $html .=  '</ul>';
    return $html;
}
а где нужно вывести, пишите просто
PHP
1
echo Tree2HTML( $tree );
1
 Аватар для Евген
7 / 7 / 0
Регистрация: 03.04.2012
Сообщений: 44
17.10.2012, 19:28  [ТС]
DrobyshevAlex, полчилось, спасибо вам огромное
0
Рождён удивлять
53 / 56 / 9
Регистрация: 08.08.2011
Сообщений: 438
21.10.2012, 11:52
Просто используйте алгоритм ID,Parent_id,Category
0
 Аватар для Евген
7 / 7 / 0
Регистрация: 03.04.2012
Сообщений: 44
21.10.2012, 13:51  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
    if(array_key_exists($item['pod_id'],$data)){
                 $data[$item['pod_id']]['subitems'][$item['id']] =&$item;
                    if(array_key_exists($item['pod_pod_id'],$data)){
                        $data[ $item['pod_pod_id'] ]['subitems'][ $item['id'] ] =& $item;
                            }                   
                
                 }  
                  else{
                 $tree[$item['id']] =& $item;
                    }
создаю меню третьего уровня(добавил столбец pod_pod_id), но почему получается что подкатегории ещё прописываются в subitems категории(обычной)..
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
Array
(
    [1] => Array
        (
            [id] => 1
            [pod_id] => 0
            [pod_pod_id] => 0
            [name_kat] => бвыаываыа
            [url_kat] => ываыааыаа
            [subitems] => Array
                (
                )
 
        )
 
    [2] => Array
        (
            [id] => 2
            [pod_id] => 0
            [pod_pod_id] => 0
            [name_kat] => бвыаываыа
            [url_kat] => ываыааыаа
            [subitems] => Array
                (
                    [3] => Array
                        (
                            [id] => 3
                            [pod_id] => 2
                            [pod_pod_id] => 0
                            [name_kat] => бвыаываыа
                            [url_kat] => ываыааыаа
                            [subitems] => Array
                                (
                                    [4] => Array
                                        (
                                            [id] => 4
                                            [pod_id] => 2
                                            [pod_pod_id] => 3
                                            [name_kat] => бвыаываыарр
                                            [url_kat] => ываыааыаа
                                            [subitems] => Array
                                                (
                                                )
 
                                        )
 
                                    [5] => Array
                                        (
                                            [id] => 5
                                            [pod_id] => 2
                                            [pod_pod_id] => 3
                                            [name_kat] => dfgdfgdfg
                                            [url_kat] => ываыааыаа
                                            [subitems] => Array
                                                (
                                                )
 
                                        )
 
                                )
 
                        )
 
                    [4] => Array
                        (
                            [id] => 4
                            [pod_id] => 2
                            [pod_pod_id] => 3
                            [name_kat] => бвыаываыарр
                            [url_kat] => ываыааыаа
                            [subitems] => Array
                                (
                                )
 
                        )
 
                    [5] => Array
                        (
                            [id] => 5
                            [pod_id] => 2
                            [pod_pod_id] => 3
                            [name_kat] => dfgdfgdfg
                            [url_kat] => ываыааыаа
                            [subitems] => Array
                                (
                                )
 
                        )
 
                )
 
        )
 
)
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
21.10.2012, 13:54
Цитата Сообщение от vixa Посмотреть сообщение
Просто используйте алгоритм ID,Parent_id,Category
А тут что, не про этот алгоритм разговор?


Цитата Сообщение от Евген Посмотреть сообщение
добавил столбец pod_pod_id
Зачем??? id и parent_id хватает для бесконечного уровня вложенности.

SQL
1
2
3
4
5
1 | NULL | Категория
2 |   1  | Подкатегория
3 |   2  | Под-Подкатегория
4 |   3  | Под-Под-Подкатегория
...
0
 Аватар для Евген
7 / 7 / 0
Регистрация: 03.04.2012
Сообщений: 44
21.10.2012, 13:56  [ТС]
DrobyshevAlex, а да, тоже думал об этом....ааа всё элементарно, я понял)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.10.2012, 13:56
Помогаю со студенческими работами здесь

Категории и подкатегории
Хочу сделать категории с подкатегориями. Но не могу придумать как различать подкатегории. Приведу пример для ясности. Например...

Категории и подкатегории
Доброго времени суток! Объясните пожалуйста как на Битрикс сделать меню всплывающее с такой структурой: Главное -1 -2 -3 --3-1...

Категории и подкатегории
Всем добрый вечер, помогите решить проблему, немогу вывести подкатегории: $res1 = mysql_query(&quot;SELECT * FROM cats WHERE root=$id...

подкатегории! подскажите
Подскажите новичку ПЛЗ!! как над существующими категориями добавить еще 3 что бы эти 3 категориии ссылались на остальные?? добавил в...

Категории, подкатегории и тд.
Нашёл статью - https://www.cyberforum.ru/php-beginners/thread519767.html Хотелось бы составить таблицы и вывод - нужна помощь! ...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru