可以參考以下代碼,但需要把你自己的數據庫鏈接,表等改一下就可以了
創新互聯長期為近1000家客戶提供的網站建設服務,團隊從業經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態環境。為涿鹿企業提供專業的網站建設、成都網站建設,涿鹿網站改版等技術服務。擁有10余年豐富建站經驗和眾多成功案例,為您定制開發。
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
要看你實現多少級了,如果是無限級,肯定只能遞歸,如果級數不多,可以確定,就不用遞歸了,用JS+php就可以實現
//如果一級菜單存在則開始菜單的顯示
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]";
這是你的代碼。
如數據菜單
1 一級一 0
2 一級二 0
3 一級一下一 1
4 一級一下二 1
一級一
一級一下一
一級一下二
一級二
生成菜單是這樣。
$sql="SELECT * FROM wiki where pid=0";
取出上表 1 2 賦予 $menu[cid]; 然后在查詢出 父級id 下的 菜單!
$sql="select * from wiki where pid=$menu[cid]";
數據庫設計的時候,通常的做法是用父ID來解決樹狀結構,也有二叉樹等等
id ?pid category_name
然后,用遞歸就能實現,也有引用數組的方式
?php
/**
*?此方法由@Tonton?提供
*?
*?@date?2012-12-12?
*/
function?genTree5($items)?{?
foreach?($items?as?$item)?
$items[$item['pid']]['son'][$item['id']]?=?$items[$item['id']];?
return?isset($items[0]['son'])???$items[0]['son']?:?array();?
}?
/**
*?將數據格式化成樹形結構
*?@author?Xuefen.Tong
*?@param?array?$items
*?@return?array?
*/
function?genTree9($items)?{
$tree?=?array();?//格式化好的樹
foreach?($items?as?$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));
?
要看效果,你加Q:573780643
1.jquery支持
script type="text/javascript" src=""/script
script type="text/javascript" src=""/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"]."/divul 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樹形菜單與數據庫 php樹形菜單與數據庫不匹配
當前鏈接:http://m.newbst.com/article46/hjpdeg.html
成都網站建設公司_創新互聯,為您提供App設計、動態網站、企業建站、自適應網站、品牌網站制作、定制開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯