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;
}
 
?>

Смотрите так же: Другие способы загрузки дерева, представленного вложенными множествами Загрузка одного уровня для дерева, представленного списками смежности Вывод дерева

Best Possible Details Shared About Casino Online watch this walterburleygriffin.org. ремонт газовых духовок на дому

Ссылки
Реклама