社区
基础编程
帖子详情
用php+mysql实现菜单树的问题
yyhlong
2002-09-08 09:39:29
具体问题是没有级数限制,点该树中的菜单时,在另外的frame中显示菜单的程序内容。数据表怎么设计?
...全文
38
3
打赏
收藏
用php+mysql实现菜单树的问题
具体问题是没有级数限制,点该树中的菜单时,在另外的frame中显示菜单的程序内容。数据表怎么设计?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
d_einstein
2002-11-16
打赏
举报
回复
Good!
bombshell
2002-11-16
打赏
举报
回复
<html>
<head>
<link href='image/style1.css' rel=stylesheet>
<script language="JavaScript">
function ShowMenu(MenuID)
{
if(MenuID.style.display=="none")
{
MenuID.style.display="";
}
else
{
MenuID.style.display="none";
}
}
</script
</head>
<body>
<?php
//基本变量设置
$GLOBALS["ID"] = 1; //用来跟踪下拉菜单的ID号
$layer = 1; //用来跟踪当前菜单的级数
//连接数据库
$Con = mysql_connect("localhost","root","");
mysql_select_db("netoffice");
//提取一级菜单
$sql = "select * from menu where parent_id=0";
$result = mysql_query($sql,$Con);
//如果一级菜单存在则开始菜单的显示
if(mysql_num_rows($result)>0) ShowTreeMenu($Con,$result,$layer,$ID);
//=============================================
//显示树型菜单函数 ShowTreeMenu($con,$result,$layer)
//$con:数据库连接
//$result:需要显示的菜单记录集
//layer:需要显示的菜单的级数
//=============================================
function ShowTreeMenu($Con,$result,$layer)
{
//取得需要显示的菜单的项目数
$numrows = mysql_num_rows($result);
//开始显示菜单,每个子菜单都用一个表格来表示
echo "<table cellpadding='0' cellspacing='0' border='0'>";
for($rows=0;$rows<$numrows;$rows++)
{
//将当前菜单项目的内容导入数组
$menu = mysql_fetch_array($result);
//提取菜单项目的子菜单记录集
$sql = "select * from menu where parent_id=$menu[id]";
$result_sub = mysql_query($sql,$Con);
echo "<tr>";
//如果该菜单项目有子菜单,则添加JavaScript onClick语句
if(mysql_num_rows($result_sub)>0)
{
echo "<td width='20'><img src='../image/openfold.gif' border='0'></td>";
echo "<td class='Menu' onClick='javascript:ShowMenu(Menu".$GLOBALS["ID"].");'>";
}
else
{
echo "<td width='20'><img src='../image/closedfold.gif' border='0'></td>";
echo "<td class='Menu'>";
}
//如果该菜单项目没有子菜单,并指定了超级连接地址,则指定为超级连接,
//否则只显示菜单名称
if($menu[url] != "")
echo "<a href='$menu[url]' target='$menu[show_frame]'>$menu[name]</a>";
else
echo $menu[name];
echo "
</td>
</tr>
";
//如果该菜单项目有子菜单,则显示子菜单
if(mysql_num_rows($result_sub)>0)
{
//指定该子菜单的ID和style,以便和onClick语句相对应
echo "<tr id=Menu".$GLOBALS["ID"]++." style='display:none'>";
echo "<td width='20'> </td>";
echo "<td>";
//将级数加1
$layer++;
//递归调用ShowTreeMenu()函数,生成子菜单
ShowTreeMenu($Con,$result_sub,$layer);
//子菜单处理完成,返回到递归的上一层,将级数减1
$layer--;
echo "</td></tr>";
}
//继续显示下一个菜单项目
}
echo "</table>";
}
?>
</body>
</html>
表结构如下:
create table menu(
id tinyint(4),
parent_id tinyint(4),
name varchar(20),
url varchar(30),
primary key(id));
pcdreama
2002-09-09
打赏
举报
回复
在数据表里面设置一个toplevel的字段,标识上层树的id号。
用递归的方法就可以生成一个无限深度的树。当然深度太高效率会低。
function tree($toplevel=0){
$sql=select * from tbl where toplevel=$toplevel;
$result=mysql_query($sql);
$treehtml=""; // 这个变量用来返回这个树枝的html代码
while($row=mysql_fetch_array($result)){
....... // 生成当前层的树
$treehtml.=tree($row["id"]); //用递归继续生成下一级的树.
.......
}
return $treehtml;
}
没测试果,即场写的,理论上是这样吧... :P
php
教程+
mysql
教程+网页特效
实现
树
形
菜单
代码借鉴.pdf
php
教程+
mysql
教程+网页特效
实现
树
形
菜单
代码借鉴.pdf
php
+
mysql
+jquery二级关联
菜单
[带数据库]
此版是对本站fujun2013上传的
php
+
mysql
+jquery省市区三级联动
菜单
[带数据库]进行改进的精简版本,在一定程度上提高了代码运行效率。 主体程序只有2个文件(index.
php
和jquery.js),附赠sql数据库一个,方便载入调用...
php
+
mysql
+jquery省市区三级联动
第一次上传,给点面子,多提宝贵意见(我上传的东西是不是有点火星了)反正我看着网上没有
php
mysql
下拉
菜单
二级联动
php
mysql
下拉
菜单
二级联动,连接数据库
mysql
PHP
+
mysql
实现
的三级联动
菜单
功能示例
主要介绍了
PHP
+
mysql
实现
的三级联动
菜单
功能,涉及
mysql
数据库创建、数据添加及
php
读取
mysql
、创建联动
菜单
相关操作技巧,需要的朋友可以参考下
基础编程
21,882
社区成员
140,366
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章