Дерево трехуровневое.

filon

Новичок
Дерево трехуровневое.

Привет!
Я тут новенький, так что сильно не ругайте за тупизм =)

Есть пять полей в БД.
Код:
 | ID | PID | LEVEL | POSITION | NAME |
Надо вывести дерево но при этом каждый уровень вначале сортировать по полю POSITION.

Кто что помет посоветовать?

ID - порядковый номер
PID - связующий id (parent_id)
LEVEL - уровень вложения
POSITION - позиционирование, сортировка по данному полю.

Если кому нужно - дамп таблицы.
Код:
CREATE TABLE IF NOT EXISTS `dle_categories` (
  `id` int(3) NOT NULL auto_increment,
  `pid` int(3) NOT NULL,
  `level` int(3) NOT NULL,
  `name` varchar(255) NOT NULL,
  `position` varchar(5) NOT NULL,
  `icon` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
);


INSERT INTO `dle_categories` (`id`, `pid`, `level`, `title`, `position`, `icon`) VALUES
(1, 0, 0, 'Вентиляция', '2', 'none.gif'),
(2, 1, 1, 'Воздуховоды', '1', 'none.gif'),
(3, 1, 1, 'Компактные приточно-вытяжные установки', '4', 'none.gif'),
(4, 1, 1, 'Многозональные вентиляторы', '2', 'none.gif'),
(5, 10, 2, 'Вытяжные вентиляторы', '3', 'none.gif'),
(6, 2, 2, 'Трубопроводы', '1', 'none.gif'),
(7, 2, 2, 'вытяжная установка ', '2', 'none.gif'),
(8, 0, 0, 'Кондиционирование', '2', 'none.gif'),
(9, 8, 0, 'Системы кондиционирования', '1', 'none.gif'),
(10, 8, 0, 'Канальные полупромышленные кондиционеры', '2', 'none.gif'),
(11, 0, 0, 'Противопожарное оборудование', '4', 'none.gif'),
(12, 0, 0, 'Тепловое оборудование', '5', 'none.gif'),
(13, 0, 0, 'Отопление', '3', 'none.gif'),
(14, 0, 0, 'Холодоснабжение', '6', 'none.gif'),
(15, 0, 0, 'Автоматика', '7', 'none.gif'),
(18, 0, 0, 'Спец. исполнение', '8', 'none.gif'),
(16, 1, 2, 'xxxxx', '8', '');
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
что ты от нас тогда хочешь?
Поругать или за ушком почесать?

-~{}~ 14.01.10 03:10:

http://phpclub.ru/faq/Tree/Internal?v=38y

Включи мозги, найди отличия.

Сделай выводы.
 

filon

Новичок
Сделал. Форум как был наполнен "умами" 5 лет назад так и остался.

Дизайнер включает(или выключает) мозг когда рисует но не когда раз в сто лет нужно что то написать.

Был бы "задротом" программистом, не лез бы сюда.

Но моего примитивного дизайнерского мозга хватило лишь на


PHP:
	$sql = "SELECT * FROM dle_categories WHERE level = 0 ORDER BY position";
	$query = $db->query($sql);
	$sql2 = "SELECT * FROM dle_categories WHERE level = 1 ORDER BY position";
	$query2 = $db->query($sql2);
	$sql3 = "SELECT * FROM dle_categories WHERE level = 2 ORDER BY position";
	$query3 = $db->query($sql3);
	

	while ($row = $db->get_row($query))
	{

		$r .= ListForm($row['id'], $row['pid'], $row['level'], $row['position'], $row['title'], $row['icon']);
	

			while ($row2 = $db->get_row($query2))
			{
				if ($row2['pid'] == $row['id'])
				{
					$r .= ListForm($row2['id'], $row2['pid'], $row2['level'], $row2['position'], $row2['title'], $row2['icon']);
				} else {}
					
				while ($row3 = $db->get_row($query3))
				{
				
					if ($row3['pid'] == $row2['id'])
					{
						$r .= ListForm($row3['id'], $row3['pid'], $row3['level'], $row3['position'], $row3['title'], $row3['icon']);
					} else {}
				}
			}
		
		

		
	}
 

Lightning

Трудоголик
filon
Политика форума такова, что не важно, являешься ли ты "задротом" программистом или "задротом" дизайнером, за тебя никто твою работу делать не будет...
 

fixxxer

К.О.
Партнер клуба
чо, ну если ты задрот-клепатель говносайтов (дизайнеры не лезут в дле и даже версткой не занимаются), то такой вариант и оставь, покатит: в дле говнокодом больше говнокодом меньше.
 
Сверху