本文目錄一覽:
- 1、用php調資料庫做樹狀顯示
- 2、誰有詳細php 下拉菜單代碼?
- 3、PHP遞歸樹形菜單
- 4、php如何分頁顯示樹狀結構數據?
- 5、在php後台中如何實現頁面左側常用的樹狀多級菜單呢?如果可以的說下原理並留下一個實例吧。謝謝了!
用php調資料庫做樹狀顯示
資料庫設計的時候,通常的做法是用父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));
?
誰有詳細php 下拉菜單代碼?
這是我自己用的一段代碼,你自己改一下,點一下一級文本框,它所屬的文本框會收起或伸展。
SCRIPT language=javascript
!–
function menu_tree(meval)
{
var left_n=eval(meval);
if (left_n.style.display==”none”)
{ eval(meval+”.style.display=”;”); }
else
{ eval(meval+”.style.display=’none’;”); }
}
—
/SCRIPT
TABLE class=navi cellSpacing=1 align=center border=0
TBODY
TR
TH後台 新聞分類/TH/TR/TBODY/TABLEBR
table border=0 cellspacing=1 align=center class=form
tr
th colspan=”2″添加分類/th
/tr
form action=”” method=”post”
tr
td colspan=”2″ align=”center” height=’30’
select name=”fid”
option value=”0″添加大類/option
?php
$query=$db-findall(“shipin where fid=0”);
while ($row=$db-fetch_array($query)){
$new_class_arr[$row[id]]=$row[name];
echo “option value=\”$row[id]\”$row[name]/option”;
}
?
/select
input type=”text” name=”name” value=””
input type=”submit” name=”into_class” value=”添加分類”/
/td
/form
/tr
/table
br
table border=0 cellspacing=1 align=center class=form
tr
th colspan=”2″系統分類/th
/tr
?php
foreach ($new_class_arr as $id=$val){
?
tr
td onClick =”javascript:menu_tree(‘left?=$id ?’);”
form action=”” method=”post”
IMG src=”images/menu.gif” align=absMiddle border=0
input type=”hidden” name=”id” value=”?php echo $id?”
input type=”text” name=”name” value=”?php echo $val?”
input type=”submit” name=”update_class” value=”更新”/
input type=”button” value=”刪除” onclick=”location.href=’?del=?php echo $id?'”/
/form
/td
/tr
tr id=left?=$id ?
td
table
tbody
?php
$query_fid=$db-findall(“shipin where fid=$id”);
while ($row_fid=$db-fetch_array($query_fid)){
?
tr
td
form action=”” method=”post”
IMG src=”images/menu.gif” align=absMiddle border=0
input type=”hidden” name=”id” value=”?php echo $row_fid[id]?”
input type=”text” name=”name” value=”?php echo $row_fid[name]?”
input type=”submit” name=”update_class” value=”更新”/
input type=”button” value=”刪除” onclick=”location.href=’?del=?php echo $row_fid[id]?'”/
/form
/td/tr
?php }?
/tbody
/table
/td
/tr
?php
}
?
/table
/BODY/HTML
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如何分頁顯示樹狀結構數據?
分頁了還怎麼顯示樹狀?能顯示 但是很難看 ,看不出效果了,我寫後台菜單管理從來不分頁,phpcmsV9 也沒有分頁 。我推薦使用 tree.class.php phpcmsV9 的一個擴展類文件,可以看看怎麼使用。如圖 我就是直接顯示的:
在php後台中如何實現頁面左側常用的樹狀多級菜單呢?如果可以的說下原理並留下一個實例吧。謝謝了!
//’name’=’標題’,’main_page’=’左導航’,’r_nav’=’默認主頁’
$group_type_arr=array(
2=array(‘name’=’企業管理’,’main_page’=’admin_enterprise’,’r_nav’=’admin_enterprise_open’),
4=array(‘name’=’個人用戶管理’,’main_page’=’user_ctrl’,’r_nav’=’admin_user_dat’),
5=array(‘name’=’點評管理’,’main_page’=’comment_ctrl’,’r_nav’=’comment’),
7=array(‘name’=’統計管理’,’main_page’=’stats_ctrl’,’r_nav’=’admin_product_business_count’),
8=array(‘name’=’群組管理’,’main_page’=’group_ctrl’,’r_nav’=’useradmin’),
);
這是左側第一級菜單,循環這個,在它裡面可以直接加入二級菜單
原創文章,作者:HXYH,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/141636.html