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

  • Автор темы Автор темы filon
  • Дата начала Дата начала

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', '');
 
что ты от нас тогда хочешь?
Поругать или за ушком почесать?

-~{}~ 14.01.10 03:10:

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

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

Сделай выводы.
 
Сделал. Форум как был наполнен "умами" 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 {}
				}
			}
		
		

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