亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

使用"函數(shù)遞歸"實(shí)現(xiàn)基于php和MySQL的動(dòng)態(tài)樹型菜單

2019-09-08 23:11:02
字體:
供稿:網(wǎng)友

樹型菜單在很多桌面應(yīng)用系統(tǒng)中都有非常廣泛的應(yīng)用,其主要優(yōu)點(diǎn)是結(jié)構(gòu)清晰,利于使用者非常清楚的知道目前自己所在的位置。但在web上樹型菜單的應(yīng)用因?yàn)闆]有理想的現(xiàn)成組件可以拿過來直接使用,所以一般的情況下,程序員主要是通過JavaScript來實(shí)現(xiàn)一些簡(jiǎn)單的樹型結(jié)構(gòu)菜單,但這些菜單往往都是事先定好各菜單項(xiàng)目,以及各菜單項(xiàng)目之間的層次關(guān)系,不利于擴(kuò)充,一旦需要另一個(gè)菜單結(jié)構(gòu)時(shí),往往還需要重新編寫,因此使用起來不是很方便。

經(jīng)過對(duì)函數(shù)遞歸的研究,我發(fā)現(xiàn)這種樹型菜單可以通過遞歸函數(shù),使樹型菜單的顯示實(shí)現(xiàn)動(dòng)態(tài)變化,并沒有級(jí)數(shù)的限制。下面就是我用php,MySQL,JavaScript寫的一個(gè)動(dòng)態(tài)樹型菜單的處理代碼,如果大家有興趣的話,就和我一起來看看我是如何實(shí)現(xiàn)的吧:)

首先,我們需要一個(gè)數(shù)據(jù)庫,在這個(gè)數(shù)據(jù)庫中,我們建立以下一張表:

CREATE TABLE menu (
id tinyint(4) NOT NULL auto_increment,
parent_id tinyint(4) DEFAULT '0' NOT NULL,
name varchar(20),
url varchar(60),
PRIMARY KEY (id)
);


這張表中
id 為索引
parent_id 用來保存上一級(jí)菜單的id號(hào),如果是一級(jí)菜單則為0
name 為菜單的名稱,也就是要在頁面上顯示的菜單內(nèi)容
url 如果某菜單為末級(jí)菜單,則需要指定該連接的url地址,這個(gè)字段就是用來保存此地址的,其他非末級(jí)菜單,該字段為空

好了,數(shù)據(jù)庫有了,你就可以添加一些記錄了,下面是我做測(cè)試的時(shí)候,使用的一些記錄:

INSERT INTO menu VALUES ( '1', '0', '人事管理', '');
INSERT INTO menu VALUES ( '2', '0', '通訊交流', '');
INSERT INTO menu VALUES ( '3', '1', '檔案管理', '');
INSERT INTO menu VALUES ( '4', '1', '考勤管理', 'http://localhost/personal/attendance.php');
INSERT INTO menu VALUES ( '5', '2', '通訊錄', '');
INSERT INTO menu VALUES ( '6', '2', '網(wǎng)絡(luò)會(huì)議', '');
INSERT INTO menu VALUES ( '7', '3', '新增檔案', 'http://localhost/personal/add_achive.php');
INSERT INTO menu VALUES ( '8', '3', '查詢檔案', 'http://localhost/personal/search_archive.php');
INSERT INTO menu VALUES ( '9', '3', '刪除檔案', 'http://localhost/personal/delete_archive.php');
INSERT INTO menu VALUES ( '10', '5', '新增通訊記錄','http://localhost/communication/add_address.php');
INSERT INTO menu VALUES ( '11', '5', '查詢通訊記錄', http://localhost/communication/search_address.php');
INSERT INTO menu VALUES ( '12', '5', '刪除通訊記錄', http://localhost/communication/delete_address.php');
INSERT INTO menu VALUES ( '13', '6', '召開會(huì)議', 'http://localhost/communication/convence_meeting.php');
INSERT INTO menu VALUES ( '14', '6', '會(huì)議查詢', 'http://localhost/communication/search_meeting.php');


在添加記錄的時(shí)候,一定要注意,非一級(jí)菜單的parent_id一定要指定為上級(jí)菜單的ID號(hào),否則你的菜單是不會(huì)顯示出來的:)

好了!有了數(shù)據(jù)庫,下面就是通過php,JavaScript把菜單從數(shù)據(jù)庫中讀出來,并顯示出來了:)

1、JavaScript腳本:

function ShowMenu(MenuID)
{
if(MenuID.style.display=="none")
{
MenuID.style.display="";
}
else
{
MenuID.style.display="none";
}
}

這個(gè)腳本很簡(jiǎn)單,就是用來響應(yīng)點(diǎn)擊某個(gè)菜單被點(diǎn)擊的事件的。

2、CSS文件:

<!-- 表格樣式 -->
TD {
FONT-FAMILY: "Verdana", "宋體"; FONT-SIZE: 12px; LINE-HEIGHT: 130%; letter-spacing:1px
}

<!-- 超級(jí)連接樣式 -->
A:link {
COLOR: #990000; FONT-FAMILY: "Verdana", "宋體"; FONT-SIZE: 12px; TEXT-DECORATION: none; letter-spacing:1px
}
A:visited {
COLOR: #990000; FONT-FAMILY: "Verdana", "宋體"; FONT-SIZE: 12px; TEXT-DECORATION: none; letter-spacing:1px
}
A:active {
COLOR: #990000; FONT-FAMILY: "Verdana", "宋體"; FONT-SIZE: 12px; TEXT-DECORATION: none; letter-spacing:1px
}
A:hover {
COLOR: #ff0000; FONT-FAMILY: "Verdana", "宋體"; FONT-SIZE: 12px; TEXT-DECORATION: underline; letter-spacing:1px
}

<!-- 其他樣式 -->
.Menu {
COLOR:#000000; FONT-FAMILY: "Verdana", "宋體"; FONT-SIZE: 12px; CURSOR: hand
}


定義了一些基本的樣式信息,比如字體,顏色,超級(jí)連接的樣式等,如果你想改變樣式的話,只要修改這里就行了!

3、下面就是我的php頁面了!

<html>
<head>
<link href='style.css' rel=stylesheet>
<script language="JavaScript" src="TreeMenu.js"></script>
</head>
<body>
<?php
//基本變量設(shè)置
$GLOBALS["ID"] =1; //用來跟蹤下拉菜單的ID號(hào)
$layer=1; //用來跟蹤當(dāng)前菜單的級(jí)數(shù)

//連接數(shù)據(jù)庫
$Con=mysql_connect("localhost","root","");
mysql_select_db("work");

//提取一級(jí)菜單
$sql="select * from menu where parent_id=0";
$result=mysql_query($sql,$Con);

//如果一級(jí)菜單存在則開始菜單的顯示
if(mysql_num_rows($result)>0) ShowTreeMenu($Con,$result,$layer,$ID);


//=============================================
//顯示樹型菜單函數(shù) ShowTreeMenu($con,$result,$layer)
//$con:數(shù)據(jù)庫連接
//$result:需要顯示的菜單記錄集
//layer:需要顯示的菜單的級(jí)數(shù)
//=============================================
function ShowTreeMenu($Con,$result,$layer)
{
//取得需要顯示的菜單的項(xiàng)目數(shù)
$numrows=mysql_num_rows($result);

//開始顯示菜單,每個(gè)子菜單都用一個(gè)表格來表示
echo "<table cellpadding='0' cellspacing='0' border='0'>";

for($rows=0;$rows<$numrows;$rows++)
{
//將當(dāng)前菜單項(xiàng)目的內(nèi)容導(dǎo)入數(shù)組
$menu=mysql_fetch_array($result);

//提取菜單項(xiàng)目的子菜單記錄集
$sql="select * from menu where parent_id=$menu[id]";
$result_sub=mysql_query($sql,$Con);

echo "<tr>";
//如果該菜單項(xiàng)目有子菜單,則添加JavaScript onClick語句
if(mysql_num_rows($result_sub)>0)
{
echo "<td width='20'><img src='http://www.7880.com/Info/folder.gif' border='0'></td>";
echo "<td class='Menu' onClick='javascript:ShowMenu(Menu".$GLOBALS["ID"].");'>";
}
else
{
echo "<td width='20'><img src='http://www.7880.com/Info/file.gif' border='0'></td>";
echo "<td class='Menu'>";
}
//如果該菜單項(xiàng)目沒有子菜單,并指定了超級(jí)連接地址,則指定為超級(jí)連接,
//否則只顯示菜單名稱
if($menu[url]!="")
echo "<a href='$menu[url]'>$menu[name]</a>";
else
echo $menu[name];
echo "
</td>
</tr>
";

//如果該菜單項(xiàng)目有子菜單,則顯示子菜單
if(mysql_num_rows($result_sub)>0)
{
//指定該子菜單的ID和style,以便和onClick語句相對(duì)應(yīng)
echo "<tr id=Menu".$GLOBALS["ID"]++." style='display:none'>";
echo "<td width='20'> </td>";
echo "<td>";
//將級(jí)數(shù)加1
$layer++;
//遞歸調(diào)用ShowTreeMenu()函數(shù),生成子菜單
ShowTreeMenu($Con,$result_sub,$layer);
//子菜單處理完成,返回到遞歸的上一層,將級(jí)數(shù)減1
$layer--;
echo "</td></tr>";
}
//繼續(xù)顯示下一個(gè)菜單項(xiàng)目
}
echo "</table>";
}
?>
</body>
</html>


在上面的php頁面里面,我定義了一個(gè)函數(shù)ShowTreeMenu(),通過這個(gè)函數(shù)的調(diào)用,會(huì)從數(shù)據(jù)庫中遞歸的調(diào)出每個(gè)菜單項(xiàng)目,并顯示在頁面上了:)
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
亚洲乱码国产乱码精品| 欧美精品久久久久久久久46p| 给我看免费高清在线观看| 中文字幕免费高| 国产aⅴ精品一区二区三区色成熟| 波多野结衣的一区二区三区| 伊人久久噜噜噜躁狠狠躁| 99re热在线观看| 国产日产精品一区二区三区四区| 亚洲美女毛片| 久久久久久一区| 毛片av中文字幕一区二区| 成人直播在线观看| 丁香网亚洲国际| 97色伦图片97综合影院| 色综合99久久久无码国产精品| 九色91在线| 精品人妻一区二区三区日产| 国产深夜视频在线观看| 伊人伊人伊人久久| 丝袜诱惑一区二区| 成年人网站免费观看| 国产制服91一区二区三区制服| www.久久| 91视频在线视频| 不卡av在线免费观看| 人人超碰91尤物精品国产| 久久成人在线视频| 欧美亚洲在线| 欧美寡妇偷汉性猛交| 成人在线免费观看av| 久本草在线中文字幕亚洲欧美| 国产亚洲欧美激情| 美女在线不卡| 国产导航在线| eeuss影院第1页在线| 亚洲黄色免费| 理论片大全免费理伦片| 国产裸体舞一区二区三区| 欧美午夜寂寞影院| 亚洲精品国产综合久久| 成人动漫网站在线观看| 电影中文字幕一区二区| 亚洲区综合中文字幕日日| 色婷婷国产精品久久包臀| 精品一区二区三区日韩| 精品一区二区亚洲| 成人羞羞在线观看网站| 禁果av一区二区三区| 美女被人操网站| 模特精品在线| 欧美电影免费观看高清完整| www.com.cn成人| 三级网站免费看| 亚洲日本va中文字幕| 日韩在线视频网| 精品欧美一区二区精品少妇| 国产一级二级三级在线观看| 日韩av一级大片| 97国产在线观看| 国产精品成人免费一区二区视频| www黄色在线观看视频| 亚洲视频在线一区观看| 国产一区二区日韩| 麻豆免费在线观看视频| 亚洲精品av在线| 亚洲国产精品嫩草影院久久av| 在线观看不卡| 一级黄色录像大片| 午夜精品福利一区二区三区蜜桃| 日本亚洲欧美在线| 国产三级免费观看| xxx免费视频| 精品中文av资源站在线观看| 欧美午夜性色大片在线观看| 99re热视频| 永久免费黄色软件| 伊人免费在线观看高清版| 久草在线资源站资源站| 一个人在线视频免费观看www| 岛国成人av| 91最新国产视频| 国产经典视频一区| 日韩国产欧美在线观看| 成人影视免费观看| 日韩欧美一区二区视频在线播放| 在线亚洲欧美| 亚洲人线精品午夜| av电影免费在线| 在线视频中文字幕第一页| 日本美女一区二区三区视频| 国产xxxxxx久色视频在| 玖玖玖国产精品| 精品国偷自产在线视频| jizzjizzjizz中国| 超碰中文字幕在线| 网红女主播少妇精品视频| 欧美成aaa人片免费看| 国产精品入口麻豆免费观看| 九九九热视频| 亚洲国产二区| 中文字幕免费一区二区三区| 国产成人免费在线| 婷婷激情一区| 一本色道久久88精品综合| mm1313亚洲国产精品美女| 欧美吞精做爰啪啪高潮| 色综合久久中文字幕综合网小说| 亚洲国产成人久久综合一区| 亚洲人成电影网站| 18深夜视频在线观看| 欧美性大战久久久久久久蜜臀| 欧美二区在线视频| 超碰在线97免费| 国产精品一区毛片| 欧美激情视频网站| 欧美视频xxxx| 日韩精品一区二区在线观看| 午夜精品免费观看| 欧美日韩中文不卡| av第一福利在线导航| 国产午夜精品一区二区理论影院| 精品欧美aⅴ在线网站| 欧美日产国产成人免费图片| 国产亚洲精品女人久久久久久| 在线免费看av的网站| 蜜桃av一区二区| 国产精品久久久av久久久| 91精品久久久久久久久99蜜臂| 综合激情网站| 日韩午夜影院| 婷婷综合六月| gogogo高清在线观看免费完整版| 日韩一区二区高清| 黄色av免费在线看| 丁香社区五月天| 成人亚洲一区二区三区| 精品入口蜜桃| 国产精品久久久久久无人区| a级片在线观看免费| 日本熟女一区二区| 激情亚洲综合网| 草草影院在线观看| 日本黄色小视频在线观看| 9l国产精品久久久久麻豆| 国产亚洲欧洲一区高清在线观看| 欧美亚洲国产一区| 国产精品视频免费观看www| 亚洲第一区在线观看| 国产又黄又大久久| 国产日韩精品久久| 国产精品久久久久久久久男| 欧美一级网站| 激情视频网站在线播放色| 成人在线观看www| 中文字幕日韩av电影| 国产美女主播在线| 激情小说综合网| 日韩精品在线中文字幕| 北条麻妃一区二区三区在线| 亚洲精品成人a8198a| 亚洲aⅴ日韩av电影在线观看| free性中国hd国语露脸| 久久精品视频在线播放| 99视频精品全部免费看| 97在线观看免费视频| 日韩无一区二区| 欧美激情视频一区| 精品国产网站| 九色91播放| 91欧美精品| 亚洲中午字幕| 少妇高潮一区二区三区99| 69ww免费视频播放器| 国产一级淫片久久久片a级| 91福利国产成人精品播放| 日韩av免费在线观看| 日韩脚交footjobhdboots| 北条麻妃av毛片免费观看| 快灬快灬一下爽蜜桃在线观看| 国产色视频在线播放| 成人短视频在线观看| 亚洲午夜久久久久中文字幕| 在线免费看黄av| 成人乱色短篇合集| 2023欧美最顶级a∨艳星| 特级毛片www| 国产经典视频一区| 亚洲婷婷伊人| 午夜亚洲福利老司机| 国产丝袜控视频在线观看| 欧美成人嫩草网站| 黄色成人av在线| 欧美做受喷浆在线观看| 精品麻豆av| 成人黄色视屏网站| 国内av一区二区三区| 国产精品v亚洲精品v日韩精品| 亚洲午夜天堂| 欧美在线免费视频| 亚洲欧美日韩在线一区| 8x8ⅹ拨牐拨牐拨牐在线观看| 日本伊人精品一区二区三区观看方式| 97超碰在线资源| 免费激情视频网站| 国产精品16p| 在线视频一区二区三区在线播放| 制服.丝袜.亚洲.中文.综合懂色| 久久精品日产第一区二区三区高清版| 亚洲国产精品久久91精品| 操91在线视频| 动漫美女无遮挡免费| 视频在线一区二区三区| 少妇一区二区三区四区| 99久久香蕉| 中文字幕亚洲综合久久筱田步美| 国模吧一区二区| 国内精品免费一区二区三区| 做爰无遮挡三级| 中文字幕在线免费观看视频| 久久久久久999| 色一情一乱一区二区三区| 精品国产免费人成电影在线观看四季| 国产福利久久精品| 亚洲九九精品| 国产中文欧美日韩在线| 亚洲精品久久久北条麻妃| 欧美性老头oldtight| 在线播放一区二区三区| 美乳少妇欧美精品| 一区二区免费在线视频| 日本24小时在线高清视频| 国产毛片毛片毛片毛片毛片| 亚洲国产古装精品网站| 免费一级欧美在线观看视频| 天天爽天天狠久久久| 狠狠色伊人亚洲综合成人| 九色视频在线观看免费| 日韩美女在线| 日韩制服一区| 你懂的在线观看一区二区| 国产成人午夜电影| 欧美一区二区三区在| 中文字幕视频三区| 日韩美女av在线免费观看| 高清欧美日韩| 韩国v欧美v日本v亚洲| 日韩激情av在线免费观看| 欧美日韩性视频| 91原创在线视频| 一区二区在线观看视频在线观看| 九色福利视频| 黄视频在线观看免费| 日韩欧美亚洲国产一区| www.久久久| 国产成人久久久久| 国产精品福利电影| 国产福利片一区二区| 国产女人水真多18毛片18精品| 成人在线播放视频| 日韩 欧美一区二区三区| 成av人电影在线观看| 黄色免费观看视频网站| 日本亚洲欧美美色| 欧美色婷婷天堂网站| 日韩在线观看视频一区| 亚洲黄色录像片| 欧美日韩在线观看一区二区| 免费av在线一区二区| 欧美视频自拍偷拍| 亚洲成人毛片| 丰满人妻一区二区三区免费| 污视频网站在线免费| 亚州色图欧美色图| 欧美激情二区三区| 欧美疯狂性受xxxxx另类| 99精品国产在热久久婷婷| 美女又爽又黄免费视频| 青檬在线电视剧在线观看| 亚洲美女自拍偷拍| 欧美成ee人免费视频| 激情五月色婷婷| 亚洲国产精品成人av| 婷婷综合另类小说色区| 免费中文字幕在线观看| 91在线观看欧美日韩| 中文字幕 视频一区| 影音先锋人妻啪啪av资源网站| 五月精品在线| 午夜精品在线看| 午夜色在线观看| 欧美特级xxxxbbbb毛片| 亚洲一品av免费观看| 97久久精品人搡人人玩| 欧美午夜免费电影| 欧美激情一区在线观看| 天天干天天爽| 久热精品在线播放| 欧美 日韩 国产 高清| 亚洲最大成人在线视频| 国产女人18水真多毛片18精品| 97免费高清电视剧观看| 九九精品视频在线观看九九| 搞黄网站免费观看| 精国产品一区二区三区a片| 久久综合色8888| 潘金莲一级淫片aaaaaa播放1| 亚洲黄色录像片| 在线视频亚洲色图| 美女久久久久久久久| gogogo免费视频观看亚洲一| 最近中文字幕在线观看视频| 欧美在线视频在线播放完整版免费观看| 久久久免费视频网站| 妞干网这里只有精品| 亚洲草久电影| 国产成人午夜精品| 超碰在线图片| 自拍av在线| 玖玖爱免费视频| 国产伦精品一区二区三区在线观看| 成人av影视| 97国产精品videossex| 久cao在线| 精品视频一区二区三区四区五区| 91尤物国产福利在线观看| 激情亚洲成人| 两个人免费视频观看日本|