用PHP实现多级树型菜单
---摘自互联网
<?
//树型目录结构模板程序
//菜单目录库字段说明:
//menu_id 菜单项目 id
//menu 菜单名称
//menu_grade 菜单等级 1 为主菜单 2 为二级菜单 ........
//menu_superior 上一级菜单 id 号
function my_menu($menu_content,$i,$menu_grade_temp,$menu_superior_temp)
{
global $PHP_SELF;
$temp1=$menu_grade_temp+1;
$menu_superior_temp_array=split("/",$menu_superior_temp);
for ($t=0;$t<$i;$t++)
{
$menu_array=split("/",$menu_content[$t]);
If(($menu_array[2]==$menu_grade_temp)&&($menu_array[3]==$menu_superior_temp_array[$menu_grade_temp-1]))
{
for($p=1;$p<=$menu_grade_temp;$p++){echo " ";}
$temp3=$menu_superior_temp_array;
$temp3[$menu_grade_temp]=$menu_array[0];
$temp2=implode("/",$temp3);
if ($menu_array[0]==$menu_superior_temp_array[$temp1-1])
{
$temp5=$temp1-1;
$temp3[$menu_grade_temp]="";
$temp6=implode("/",$temp3);
echo "<a href=\"$PHP_SELF?menu_grade_temp=".$temp5."&menu_superior_temp=$temp6\">$menu_array[1]</a>
";
my_menu($menu_content,$i,$temp1,$temp2);
}
else
{
$temp3[$menu_grade_temp+1]="";
$temp6=implode("/",$temp3);
echo "<a href=\"$PHP_SELF?menu_grade_temp=".$temp1."&menu_superior_temp=$temp6\">$menu_array[1]</a>
";
}
}
}
}
// 连接 MySql 数据库
$db_host="localhost";
$db_user="dkj";
$db_password="123";
$db_name="test";
mysql_connect($db_host,$db_user,$db_password);
mysql_select_db($db_name);
//从数据库中取得数据
$query_string="select * from menu order by menu_grade";
$db_data=mysql_query($query_string);
//第一次执行初始化
if ($menu_grade_temp=="")
{
$menu_superior_temp=0;
}
//将所有的信息读入数组,并统计数组个数
$i=0;
while (list($menu_id,$menu,$menu_grade,$menu_superior)=mysql_fetch_row($db_data))
{
$menu_content[$i]=$menu_id."/".$menu."/".$menu_grade."/".$menu_superior;
$i++;
}
my_menu($menu_content,$i,1,$menu_superior_temp);
/* 附数据库结构及模拟数据
# phpMyAdmin MySQL-Dump
#
# 主机: localhost 数据库 : test
# --------------------------------------------------------
#
# 数据表的结构 'menu'
#
CREATE TABLE menu (
menu_id int(11) NOT NULL auto_increment,
menu varchar(20) NOT NULL,
menu_grade int(11) NOT NULL,
menu_superior int(11) NOT NULL,
UNIQUE menu_id (menu_id)
);
#
# 导出下面的数据库内容 'menu'
#
INSERT INTO menu VALUES( '1', '计算机', '1', '0');
INSERT INTO menu VALUES( '2', '编程', '2', '1');
INSERT INTO menu VALUES( '3', '网络', '2', '1');
INSERT INTO menu VALUES( '4', 'PHP与MySql', '3', '2');
INSERT INTO menu VALUES( '5', 'C语言', '3', '2');
INSERT INTO menu VALUES( '6', '网页制作', '3', '3');
INSERT INTO menu VALUES( '7', 'TCP、IP协议', '3', '3');
INSERT INTO menu VALUES( '8', '数学', '1', '0');
INSERT INTO menu VALUES( '9', '高等数学', '2', '8');
INSERT INTO menu VALUES( '10', '线性代数', '3', '9');
INSERT INTO menu VALUES( '11', '离散数学', '3', '9');
INSERT INTO menu VALUES( '12', '初等数学', '2', '8');
INSERT INTO menu VALUES( '13', '文学', '1', '0');
INSERT INTO menu VALUES( '14', '中国文学', '2', '13');
INSERT INTO menu VALUES( '15', 'php', '4', '4');
INSERT INTO menu VALUES( '16', 'mysql', '4', '4');
*/
?>
分享到:
相关推荐
使用CSS的`transition`属性可以轻松实现菜单展开和收起的平滑效果。 6. **响应式设计**:确保菜单在不同屏幕尺寸下都能正常工作,这通常需要调整布局和显示方式。可以使用媒体查询(`@media`)和JS根据窗口大小动态...
在IT领域,构建一个可操作的多级目录树型结构菜单是常见的需求,尤其是在Web应用中,用于组织和展示复杂的层级关系,如文件系统、权限管理或者导航菜单。这款"多级目录树型结构菜单js代码"正是为解决这类问题而设计...
传统的实现方式通常使用递归算法,但这种方法可能会导致内存消耗过大,尤其是在菜单层级很深的情况下。本主题介绍了一种不依赖递归的高效方法来创建无限级树型菜单,具有快速加载的特点。 首先,我们来看`WriteXML....
【标题】"精美的ajax树型菜单" 描述了一个利用AJAX技术实现的交互式树状菜单,这种菜单设计能够提供动态加载数据的功能,提升用户体验。在网页设计中,树型菜单通常用于组织大量层级结构的数据,使得用户可以便捷地...
本文将深入探讨“简单好用的JS树型菜单”这一主题,包括其设计原理、实现方法以及如何进行动态添加节点。 首先,我们要理解树型菜单的基本结构。在HTML中,我们可以使用`<ul>`和`<li>`元素来创建一个多级的无序列表...
JavaScript允许动态地创建和修改DOM元素,实现菜单的展开和折叠,同时还可以处理用户的交互事件。CSS则用来控制菜单的外观,包括颜色、字体、布局和动画效果。 在实际应用中,树型菜单广泛应用于网站的侧边栏导航、...
`dtree.js` 可能是一个JavaScript文件,用于实现菜单的交互功能,如点击展开/折叠子菜单,这在用户界面中提供了更好的用户体验。 `img` 文件夹可能包含了一些图标资源,如展开/折叠箭头、子菜单指示器等,这些图标...
unity自制多级树型菜单,实现分层次列表展开,仿unity编辑界面Hierarchy窗口-附件资源
本篇文章将详细讲解标题和描述中提到的各种菜单效果,包括多级渐变菜单、经典树型菜单、三级关联菜单、收藏夹式树型菜单、拖拽菜单、五角型菜单以及软件型菜单。 首先,多级渐变菜单是一种视觉效果丰富的菜单设计,...
自制仿unity编辑界面Hierarchy样式做一个树形菜单,结构清晰,代码简单,可扩展性强
该 树型菜单是针对权限管理而写的,为了方便用JAVA来写了一个动态生成树型菜单。这个可以帮助你更好地进行权限控制管理。
本项目利用这两种技术实现了一个动态的树型菜单,它具有选择功能、动态加载和一次性加载所有节点的能力。接下来,我们将深入探讨这些概念和技术。 1. **JavaScript**:JavaScript 是一种广泛使用的客户端脚本语言,...
本文将详细讲解如何使用Java来构建一个动态的、可交互的树型菜单,包括从数据库获取数据、创建树节点、实现添加和删除节点的功能。 首先,我们需要了解Java中的树型组件。在Java Swing库中,`JTree`是用于展示树型...
5. **样式设计**:为了提供良好的用户体验,树型菜单需要有明确的视觉指示,比如用箭头表示展开/折叠状态,使用不同的颜色或图标区分不同级别的节点等。CSS可以帮助我们定制这些样式。 6. **可访问性**:考虑到无...
总的来说,这个项目提供了一个使用PHP实现无限级树型菜单的实例,涵盖了数据库设计、递归编程、HTML/CSS布局等多个Web开发的重要方面。对于想要学习如何在Web应用中构建复杂菜单结构的开发者来说,这是一个非常有...
在实现多级树型ListView前,我们需要设计一个数据模型来存储和表示层次结构。通常,我们会创建一个自定义类,如`TreeItem`,包含字段如`标题`、`子节点列表`、`是否展开`等。这样,我们可以通过`TreeItem`对象来...
总的来说,无限级可刷新Js树型菜单的实现涉及JavaScript基础、数据结构、DOM操作、事件处理、异步通信等多个知识点,需要结合实际应用场景灵活运用。通过熟练掌握这些技能,开发者可以创建出高效、用户友好的前端...
在JavaScript编程中,实现树型...总结起来,实现树型菜单的JavaScript主要涉及理解树的结构、使用递归生成DOM元素以及添加交互功能。通过这种方式,你可以灵活地根据需求定制和扩展树型菜单,使其适应各种应用场景。
这个“AJAX+XML实现的树型菜单”示例是AJAX技术的一个经典应用,主要用于提升用户体验,通过异步加载数据来构建交互式的树状导航结构。 首先,我们要理解AJAX的基本工作原理。它通过JavaScript创建XMLHttpRequest...