数据库表结构
mcp_node表;
字段(node_code, node_name,node_pcode);
node_code为区域编码,node_name为区域名称,node_pcode为父区域编码 ,祖先父区域编码为0.
预期效果:
代码实现部分:
//按照区域字段查询属于该区域管辖的所有节点
//$area_field 系统管理所属区域
//$conn 数据库连接信息
//return $datas 所有相关区域信息数组(二维)
function getAreaNodes($area_field, $conn)
{
$node_sql = "select * from mcp_node where node_code like '{$area_field}'";
$node_query = mysql_query($node_sql, conn);
$result = mysql_fetch_assoc($node_query);
$i = 0;
do
{
$data[$i] = $result;
$i++;
}while($result = mysql_fetch_assoc($node_query));
return $data;
}
//获取系统管理员所在区域父亲节点
//$area 系统管理员所属区域,在系统中由session获取
//$sign 区域编码分割符号
function getTreePnode($area, $sign)
{
if (isset($area))
{
if (strstr($area, $sign))
{
$local = strrpos($area, $sign);
$tree_pnode = substr($area, 0, $local);
}
else
{
$tree_pnode = '0';
}
return $tree_pnode;
}
}
//$data 从数据库独读出的数组数据(二维数组),getAreaNodes()返回值
//$pnode 父节点, 默认为0,即从最顶级目录开始.(顶级目录父节点为0).
// $t 控制节点层次的行缩进,默认-1
//返回生成的层级数据
function getTree($data, $pnode = 0, $t = -1)
{
$t++;
$html = '';
foreach($data as $key => $value)
{
if ($value['node_pcode'] == $pnode)
{
$html .= str_repeat(' ',3*$t).'┝'."<a href='#' οnclick=\"show_mcu('{$value['node_code']}')\">".$value['node_name']."</a>"."<br>";
$html .= getTree($data, $value['node_code'], $t);
}
}
return "<table>".$html."</table>";
}