導航:首頁 > 編程語言 > php實現樹形菜單

php實現樹形菜單

發布時間:2023-03-14 15:32:49

Ⅰ 用php調資料庫做樹狀顯示

資料庫設計的時候,通常的做法是用父ID來解決樹狀結構,也有二叉樹等等


id pid category_name


然後,用遞歸就能實現,也有引用數組的方式

<?php

/**
*此方法由@Tonton提供
*http://my.oschina.net/u/918697
*@date2012-12-12
*/
functiongenTree5($items){
foreach($itemsas$item)
$items[$item['pid']]['son'][$item['id']]=&$items[$item['id']];
returnisset($items[0]['son'])?$items[0]['son']:array();
}

/**
*將數據格式化成樹形結構
*@authorXuefen.Tong
*@paramarray$items
*@returnarray
*/
functiongenTree9($items){
$tree=array();//格式化好的樹
foreach($itemsas$item)
if(isset($items[$item['pid']]))
$items[$item['pid']]['son'][]=&$items[$item['id']];
else
$tree[]=&$items[$item['id']];
return$tree;
}

$items=array(
1=>array('id'=>1,'pid'=>0,'name'=>'江西省'),
2=>array('id'=>2,'pid'=>0,'name'=>'黑龍江省'),
3=>array('id'=>3,'pid'=>1,'name'=>'南昌市'),
4=>array('id'=>4,'pid'=>2,'name'=>'哈爾濱市'),
5=>array('id'=>5,'pid'=>2,'name'=>'雞西市'),
6=>array('id'=>6,'pid'=>4,'name'=>'香坊區'),
7=>array('id'=>7,'pid'=>4,'name'=>'南崗區'),
8=>array('id'=>8,'pid'=>6,'name'=>'和興路'),
9=>array('id'=>9,'pid'=>7,'name'=>'西大直街'),
10=>array('id'=>10,'pid'=>8,'name'=>'東北林業大學'),
11=>array('id'=>11,'pid'=>9,'name'=>'哈爾濱工業大學'),
12=>array('id'=>12,'pid'=>8,'name'=>'哈爾濱師范大學'),
13=>array('id'=>13,'pid'=>1,'name'=>'贛州市'),
14=>array('id'=>14,'pid'=>13,'name'=>'贛縣'),
15=>array('id'=>15,'pid'=>13,'name'=>'於都縣'),
16=>array('id'=>16,'pid'=>14,'name'=>'茅店鎮'),
17=>array('id'=>17,'pid'=>14,'name'=>'大田鄉'),
18=>array('id'=>18,'pid'=>16,'name'=>'義源村'),
19=>array('id'=>19,'pid'=>16,'name'=>'上壩村'),
);
echo"<pre>";
print_r(genTree5($items));
print_r(genTree9($items));
?>

Ⅱ PHP遞歸樹形菜單

可以參考以下代碼,但需要把你自己的資料庫鏈接,表等改一下就可以了

<html>
<head>
<link href='style.css' rel=stylesheet>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="javaScript" src="TreeMenu.js"></script>
</head>
<body>
<?php
//基本變數設置
$GLOBALS["ID"] =1; //用來跟蹤下拉菜單的ID號
$layer=1; //用來跟蹤當前菜單的級數
//連接資料庫
$Con=mysql_connect("localhost","root","1234");
mysql_select_db("wiki");
//提取一級菜單
$sql="SELECT * FROM wiki where pid=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 wiki where pid=$menu[cid]";
$result_sub=mysql_query($sql,$Con);
echo "<tr>";
//如果該菜單項目有子菜單,則添加JavaScript onClick語句
if(mysql_num_rows($result_sub)>0)
{
echo "<td width='20'><img src='folder.gif' border='0'></td>";
echo "<td class='Menu' onClick='javascript:ShowMenu(Menu".$GLOBALS["ID"].");'>";
}
else
{
echo "<td width='20'><img src='file.gif' border='0'></td>";
echo "<td class='Menu'>";
}
//如果該菜單項目沒有子菜單,並指定了超級連接地址,則指定為超級連接,
//否則只顯示菜單名稱
//if($menu[url]!="")
//echo "<a href='$menu[cid]'>$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>

Ⅲ 在php後台中如何實現頁面左側常用的樹狀多級菜單呢如果可以的說下原理並留下一個實例吧。謝謝了!

感覺隨便找個網上的後台管理系統都有代碼吧?

Ⅳ Thinkphp框架如何實現 頁面左側是樹形菜單,右側顯示點擊樹形菜單的響應結果。

jquery,用這個吧,bootstrap有示例代碼的

Ⅳ 麻煩各位高手大蝦們 給小弟一個 php 簡單的樹形菜單 代碼! 要注釋。。非常感謝!!!!!!

要看效果,你加Q:573780643

1.jquery支持
<script type="text/javascript" src="http://www.shkl.cc/common/javaScript/jquery-1.4.min.js"></script>
<script type="text/javascript" src="http://www.shkl.cc/common/javaScript/lightTreeview/jquery.lightTreeview.pack.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#tree').lightTreeview({
collapse: true,
line: true,
nodeEvent: true,
unique: true,
style: 'black',
animate: 400
});

});
</script>

2.樹菜單函數
<?
function getCategoryTree($TID, $iTable,$url,$urlPar="1=1") {
if ($TID == 0) {
$treeStr = $treeStr."<ul id=\"tree\" class=\"lightTreeview treeview-black\">";
}

$sql = "select * from `$iTable` where TID1 = ".$TID." order by orderid";
$rs = mysql_query($sql);
while ($ary = mysql_fetch_array($rs)) {

$treeStr = $treeStr."<li>";
$rs2 = mysql_query("select count(*) from `$iTable` where TID1 = ".$ary["id"]);
$Vcount = @mysql_result($rs2, 0);
if ($Vcount != 0) {
$treeStr = $treeStr."<div class=\"treeview-folder\">".$ary["title"]."</div><ul style=\"display:none\">";
$treeStr = $treeStr.getCategoryTree($ary["id"], $iTable,$url,$urlPar);
$treeStr = $treeStr."</ul>";
} else {
$treeStr = $treeStr."<div class=\"treeview-file\"><a href=\"".$url."?T=".$ary["id"]."&".$urlPar."\" target=\"pro\">".$ary["title"]."</a></div>";
}
$treeStr = $treeStr."</li>";
}@mysql_free_result($rs);

if ($TID == 0) {
$treeStr = $treeStr."</ul>";
}

return $treeStr;
}
?>

3.頁面上調用
<div>
<?=getCategoryTree(0,"N_type","edit.php","1=1")?>
</div>

4.數據結構
id title TID1(上一級ID)

閱讀全文

與php實現樹形菜單相關的資料

熱點內容
登錄器一般存在哪個文件夾 瀏覽:533
中興光貓機器碼演算法 瀏覽:330
android響應時間測試 瀏覽:940
java編程思想第四版答案 瀏覽:888
如何對nbt編程 瀏覽:885
mscpdf 瀏覽:948
文件夾d盤突然0位元組可用 瀏覽:272
吃火腿腸的解壓場面 瀏覽:339
衛星鍋加密教程 瀏覽:792
php7的特性是什麼 瀏覽:469
編譯類高級語言源代碼運行過程 瀏覽:177
科普中國app怎麼分享 瀏覽:87
51單片機與32單片機比較 瀏覽:422
SQL加密存儲解密 瀏覽:507
電氣工程師把程序加密 瀏覽:797
解壓切東西動畫版 瀏覽:965
點到橢圓的距離演算法 瀏覽:388
新的編譯系統 瀏覽:533
cad替換樣板命令 瀏覽:363
des演算法例子 瀏覽:390