PHP無限級分類菜單一實例程式_PHP教程

來源:互聯網
上載者:User
在做PHP程式時,經常會遇到設計多級菜單的編程,比如我們常見的三級菜單,首先展示產品的第一級分類,然後展示二級分類,最後再展示產品,這樣就構成了三級結構,如果在後台沒有一個很好的分類菜單支援,那麼去更改資料時是很麻煩的。


最近在做一個內容管理的項目,客戶硬要來一個多級分類,其實在許多的開源後台都是無限級的分類,比如bKjia.c0m的後台,而這些分類的資料僅僅只儲存到了一個資料表裡,只是用原始碼進行了關聯而已。

而這些關聯的資料並不複雜,其實一個優秀的後台設計,應該是無限的分類,這樣,在進行二次開發時,不用再單獨進行編程了,只要是功能一樣,後台添加一個分類就可以了,這樣就達到了功能共用了。

一個更簡單的無限級分類菜單代碼,我就把上面的原理簡單實現一下,這個程式的關鍵就在於資料表的設計很有特色,不用遞迴,依靠個簡單SQL語句就能列出菜單,看看這個資料表怎麼設計的:

資料庫欄位大概如下:
———————————————————————————–
id 編號

fid 父分類編號

name 分類名

path 分類路徑,以 id 為節點,組成類似 ,1,2,3,4, 這樣的字串
———————————————————————————-

可以假設有如下的資料

id fid name path
—————————————————-
1 0 分類1 ,1,

2 0 分類2 ,2,

3 1 分類1-1 ,1,3,

4 1 分類1-2 ,1,4,

5 2 分類2-1 ,2,5,

6 4 分類1-2-1 ,1,4,6,
—————————————————-
實現的PHP全部代碼用類封裝的,不是必要,而是自己也想熟悉一下OO,呵呵!,來看看頁面代碼:

代碼如下 複製代碼

/**************************************
頁面:menu.php
作者:www.bKjia.c0m
功能:定義資料庫操作及產生菜單列表類

**************************************/
class menu{
//建立建構函式,作用:資料庫連接並選擇相應資料庫
public function __construct(){
$dbhost = "localhost";
$dbuser = "root";
$dbpassword = "7529639";
$dbname = "menu";
mysql_connect($dbhost,$dbuser,$dbpassword) or die("error!");
mysql_query("SET NAMES 'GBK'");
mysql_select_db($dbname);
}

//執行SQL語句函數
private function query($sql){
return mysql_query($sql);
}

//取得bKjia.c0m結果集數組函數
private function loop_query($result){
return mysql_fetch_array($result);
}
//列出菜單列表函數
public function menulist(){
$sql="select * from list order by path";
$result=$this->query($sql);
while($rows=$this->loop_query($result)){
if(substr_count($rows['path'],',')>2){
for($i=0;$i<(substr_count($rows['path'],',')-2);$i++)
echo ' ';
}
echo $rows['name'].'
';
}
}

//建立解構函式,作用:關閉資料庫連接
public function __destruct(){
return mysql_close();
}
}
$db=new menu();//產生執行個體
$db->menulist();//調用方法產生菜單
?>

小提示:這樣就產生了一個無限級的分類菜單,當然,不僅僅只是應用在菜單上,而且可以應用在產品的分類以及地市區的分類上面,背景增刪改查需要自己小小的去寫一下

原文來自:04ie.com

http://www.bkjia.com/PHPjc/632776.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632776.htmlTechArticle在做PHP程式時,經常會遇到設計多級菜單的編程,比如我們常見的三級菜單,首先展示產品的第一級分類,然後展示二級分類,最後再展示...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.