php 从数据库读取数据并生成树型可折叠菜单

数据存储形式


折叠菜单显示


直接调用.php页面即可输出树状可折叠菜单



所用到的js
//区域折叠函数
function ShowMenu(MenuID)
{
    if(MenuID.style.display=="none")
    {
        MenuID.style.display="";
    }
    else
    {
        MenuID.style.display="none";
    }
}

//控制鼠标经过表格,表格颜色变化(在Firefox效果不明显)
function out()
{
    var obj = event.srcElement;
    
    if(obj.tagName.toLowerCase() == "td")
    {
        var otr = obj.parentNode;
        
        if(!otr.tag)
        {
            otr.style.backgroundColor = "";
        }
    }
}

function over()
{
    var obj = event.srcElement;
    
    if(obj.tagName.toLowerCase() == "td")
    {
        var otr = obj.parentNode;
        
        if(!otr.tag)
        {
            otr.style.backgroundColor = "#E1E9FD";
        }
    }
}






<?php
/*
 * Copyright (C), 2014-2015, xx Tech. Co., Ltd.
 *
 * File:   tree.php
 * Author: hu, jiangwen
 *
 * Description:从数据库读取节点数据并以树状的形式体现,支持折叠.
 *
 * History:
 *  Date        Author      Description             
 * ---------------------------------------------------------
 *  14/04/23    hujw      Initial creation
 *
 */
	include("../../config/config.db.php");
	

	if (isset($_SESSION["username"])) 
	{  

		
		$area = $_SESSION['area'];
		$GLOBALS["id"] = 1; //用来跟踪下拉菜单的id号 
		$layer = 1;			//用来跟踪当前菜单的级数 

		$db_hostname = $db_config["hostname"]; //服务器地址
		$db_username = $db_config["username"]; //数据库用户名
		$db_password = $db_config["password"]; //数据库密码
		$db_database = $db_config["database"]; //数据库名称
		$db_charset  = $db_config["charset"] ; //数据库编码
		
		if ($db_hostname != "" && $db_username != "" && $db_database != "")
		{
			$conn = mysql_connect($db_hostname,$db_username,$db_password); 
			mysql_select_db($db_database); 
			mysql_query("set names ".$db_charset);

			//提取顶级菜单 
			$sql="select * from mcp_node where `node_code` = '{$area}' "; 
			$result = @mysql_query($sql,$conn); 


			//如果顶级菜单存在则开始菜单的显示 
			if( @mysql_num_rows($result) >0 ) 
			{
				ShowTreeMenu($conn,$result,$layer);
				
			}
			else
			{
				echo "节点数据为空";
			}
		}
		else
		{
			echo "数据库配置错误";
		}
	}
			//显示树型菜单函数 ShowTreeMenu($conn,$result,$layer) 
			//$conn:数据库连接 
			//$result:需要显示的菜单记录集 
			//layer:需要显示的菜单的级数 
			function ShowTreeMenu($conn,$result,$layer) 
			{ 
				//取得需要显示的菜单的项目数 
				$numrows= mysql_num_rows($result); 

				//开始显示菜单,每个子菜单都用一个表格来表示 
				echo "<table>"; 

				for( $rows = 0; $rows < $numrows ; $rows++) 
				{ 
					
					//将当前菜单项目的内容导入数组 
					$menu = mysql_fetch_assoc($result); 
					
					//提取菜单项目的子菜单记录集 
					$sql="select * from mcp_node where `node_pcode` = '{$menu['node_code']}'"; 
					$result_sub=mysql_query($sql,$conn); 

					echo "<tr onMouseOver='over()'  onMouseOut='out()'>"; 
					
					//如果该菜单项目有子菜单,则添加javascript onclick语句 
					if (mysql_num_rows($result_sub)>0) 
					{ 
						echo "<td width='20'><img src='../../img/icons/unfold.gif' border='0'></td>"; 
						echo "<td class='Menu' onClick='javascript:ShowMenu(Menu".$GLOBALS["id"].");'>"; 
					} 
					else 
					{ 
						echo "<td width='10'><img src='../../img/icons/fold.gif' border='0'></td>"; 
						echo "<td class='Menu'>"; 
					}
					
					//show_local_tab()定义于 commom.js文件.
					echo "<a href='#' οnclick=\"show_local_tab('{$menu['node_code']}','{$menu['node_name']}')\"><font size = 3>".$menu['node_name']."</font></a>"; 

					echo "</td></tr>"; 

					//如果该菜单项目有子菜单,则显示子菜单 
					if (mysql_num_rows( $result_sub ) > 0) 
					{ 
						//指定该子菜单的id和style,以便和onClick语句相对应 
						echo "<tr id = Menu".$GLOBALS["id"]++." style='display:none'>"; 
						echo "<td></td>"; 
						
						echo "<td>"; 
						//将级数加1 
						$layer++; 
						
						//递归调用ShowTreeMenu()函数,生成子菜单 
						ShowTreeMenu($conn,$result_sub,$layer); 
						
						//子菜单处理完成,返回到递归的上一层,将级数减1 
						$layer--; 

						echo "</td></tr>"; 
					} 
					
					
				} 
				echo "</table>"; 
			} 

	
?>


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值