Tree/NsLoadLevel
Материал из PhpWiki.
Деревья в базах данных => Вложенные множества => Загрузка дерева => Загрузка одного уровня
Как загрузить один уровень?
popoff
Представленный здесь скрипт возвращает массив, описанный здесь: Внутреннее представление деревьев в программах
Срок действия автомобильной аптечки и огнетушителя.
<?php // Эта функция возвращает части sql-запроса, которые Вы можете использвоать // при построении sql-запроса на выборку одного уровня из дерева function tree_ns_load_level_sql($s_table) { // $s_table - имя таблицы, содержащей дерево // В качестве результата возвращает массив, в котором содержатся элементы: // from - часть из раздела FROM sql-запроса // level_child - номер дочернего уровня // level_parent - номер родительского уровня // parent - идентификатор родительского элемента // child - идентификатор дочернего элемента // order - порядок, в котором следует отсортировать выборку, // что бы учитывать порядок, заданный структурой дерева // where - часть из раздела WHERE sql-запроса return array( 'from' => $table." as mtl_1, ".$table." as mtl_2", 'level_child' => 'mtl_2.i_level', 'level_parent' => 'mtl_1.i_level', 'parent' => 'mtl_1.k_item', 'child' => 'mtl_2.k_item', 'order' => 'mtl_2.i_left', 'where' => " mtl_2.i_left between mtl_1.i_left+1 and mtl_1.i_right-1 and mtl_2.i_level=mtl_1.i_level+1 " ); } function tree_ns_load_level($k_parent) { // Возвращает ложь в случае ошибки if(empty($k_parent)||!is_numeric($k_parent)) return false; $sql=tree_ns_load_level_sql('t_catalog_tree'); $r=mysql_query(" select t_catalog.k_item, #идентификатор элемента t_catalog.s_name #название from ".$sql['from'].", #дерево t_catalog #данные where ".$sql['where']." and ".$sql['parent']."=".$k_parent." and t_catalog.k_item=".$sql['child']." order by ".$sql['order'].""); // Выборка может быть отсортировна по любому полю, в том числе и по полю s_name if(!$r) return false; $a_tree=array(); for($i=0;$i<mysql_num_rows($r);$i++) { $f=mysql_fetch_assoc($r); $a_tree[]=array( 'k_item' => $f['k_item'], 's_name' => $f['s_name'], 'a_tree' => array() ); } return $a_tree; } ?>
Смотрите так же: Другие способы загрузки дерева, представленного вложенными множествами Загрузка одного уровня для дерева, представленного списками смежности Вывод дерева