php从数据库读取菜单数据并树状显示

数据库表结构


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


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值