这篇文章主要介绍了php从数据库查询结果生成树形列表的方法,涉及php操作html元素生成树形列表的技巧,非常具有实用价值,需要的朋友可以参考下
本文实例讲述了php从数据库查询结果生成树形列表的方法。具体分析如下:
本代码可以从数据库读取数据生成一个类似于windows的资源管理器的树形列表
',
$parent, $showdepth > 0 ? 'show' : 'hide');
while (list($index, $node) = each($child_nodes[$parent])) {
for ($i = 0; $i < $depth; $i++) {
$up_parent = (int)$node_data[$ancestors[$i]][ 'parent'];
$last_node_on_generation = $last_child[$up_parent];
$uptree_node_on_generation = $ancestors[$i];
if ($last_node_on_generation == $uptree_node_on_generation) {
icon( "blank");
} else {
icon( "line");
}
}
if ($child_nodes[$node]) {
// has children, i.e. it is a folder
$conn_icon = "plus";
$expand = true;
} else {
$conn_icon = "join";
$expand = false;
}
if ($index == $lastindex) {
$conn_icon .= "bottom";
} elseif ($depth == 0 && $index == 0) {
$conn_icon .= "top";
}
if ($expand) {
printf( "", $node);
}
icon($conn_icon, "connImg_$node");
if ($expand) {
print( "");
}
$icon = $node_data[$node][ 'icon'];
if (!$icon) {
$type = $node_data[$node][ 'type'];
$icon = $GLOBALS[ 'dirent_icons'][$type];
}
icon($icon, "nodeImg_$node");
$name = $node_data[$node][ 'name'];
printf( '?%s
', -1, $name, 10);
if ($child_nodes[$node]) {
$newdepth = $showdepth;
if ($newdepth > 0) {
$newdepth--;
}
$new_ancestors = $ancestors;
$new_ancestors[] = $node;
display_directory($node, $newdepth, $new_ancestors);
}
}
print( "");
}
function setup_directory($parent, $maxdepth)
{
global $dirent_icons, $child_nodes, $node_data, $last_child;
$dirent_icons = sql_assoc('SELECT id,icon FROM dirent_types');
$query = 'SELECT id,parent,type,icon,name '.
'FROM directory '.
'ORDER BY parent,name';
$child_nodes = array();
$node_data = array();
$res = sql($query);
while (list($id,$parent,$type,$icon,$name)=db_fetch_row($res)){
$child_nodes[(int)$parent][] = $id;
$node_data[$id] = array( 'id' => $id,
'parent' => $parent,
'type' => $type,
'icon' => $icon,
'name' => $name);
$last_child[(int)$parent] = $id;
}
}
?>总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
立即学习“PHP免费学习笔记(深入)”;











