[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проход по категориям в цикле
Mihaz
Здавствуйте форумчане. Уже сломал себе мозг состваляя варианты как можно пройтись по категориям сохраняя структуру.

Вообще задача такая, есть табличка :


CREATE TABLE `pages_cat` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(120) NOT NULL,
`pages_id` varchar(500) NOT NULL,
`sort` int(11) NOT NULL,
`parent_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;



INSERT INTO `pages_cat` VALUES (1, 'О компании', '15;16;17;18', 1, 0);
INSERT INTO `pages_cat` VALUES (2, 'О продукции', '29;30;31', 2, 0);
INSERT INTO `pages_cat` VALUES (3, 'Подкатегория', '1;17', 1, 1);
INSERT INTO `pages_cat` VALUES (4, 'Подкатегория подкатегории', '17;18;19', 0, 3);
INSERT INTO `pages_cat` VALUES (5, 'Подкатегория подкатегории2', '20;21;22', 3, 3);
INSERT INTO `pages_cat` VALUES (6, 'О нас', '23;24;25', 3, 0);

Значение конечно больше. Надо пройтись по категориям и выводить имена страниц.Сначала проходим по основной категории выводим список всех содержащихся страниц, затем выводим ее подкатегорию, и выводим все страницы которые есть в ней. и так далее. затем поднимаемся по категориям вверх и продолжаем.
Для данной табличке должно быть так
О компании
страница с id 15
страница с id 16
страница с id 17
страница с id 18
-------Подкатегория
----- страница с id 1
----- страница с id 17
------------Подкатегория подкатегории
-------- страница с id 17
-------- страница с id 18
-------- страница с id 19
------------Подкатегория подкатегории2
-------- страница с id 20
-------- страница с id 21
-------- страница с id 22
О Продукции
страница с id 29
страница с id 30
страница с id 31
О нас
страница с id 23
страница с id 24
страница с id 25




Спустя 1 час, 47 минут, 2 секунды (14.07.2010 - 20:10) vagrand написал(а):
Юзай рекурсию

Спустя 17 часов, 20 минут, 58 секунд (15.07.2010 - 13:31) linker написал(а):
Смотри, какие отношения между категориями и страницами? Страницы зависят от категорий, т.е. страница должна содержать ссылку на свою категорию, а не наоборот. Категории вообще пофигу, какие страницы будут к ней относится, а вот для страницы важно знать своего родителя.
CREATE TABLE `pages_cat` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NOT NULL,
`name` varchar(120) NOT NULL,
`sort` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=cp1251 ;

CREATE TABLE `pages` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) NOT NULL,
`name` varchar(120) NOT NULL,
`sort` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=cp1251 ;

Спустя 5 дней, 19 часов, 3 минуты, 16 секунд (21.07.2010 - 08:34) Mihaz написал(а):
Спасибо. решил задачу. Методом рекурсии.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.