程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 函數遞歸實現php和MySQL動態樹型菜單

函數遞歸實現php和MySQL動態樹型菜單

編輯:關於PHP編程


  樹型菜單在很多桌面應用系統中都有非常廣泛的應用,其主要優點是結構清晰,利於使用者非常清楚的知道目前自己所在的位置。但在web上樹型菜單的應用因為沒有理想的現成組件可以拿過來直接使用,所以一般的情況下,程序員主要是通過JavaScript來實現一些簡單的樹型結構菜單,但這些菜單往往都是事先定好各菜單項目,以及各菜單項目之間的層次關系,不利於擴充,一旦需要另一個菜單結構時,往往還需要重新編寫,因此使用起來不是很方便。
  
  經過對函數遞歸的研究,我發現這種樹型菜單可以通過遞歸函數,使樹型菜單的顯示實現動態變化,並沒有級數的限制。下面就是我用php(做為現在的主流開發語言),MySQL(和PHP搭配之最佳組合),JavaScript寫的一個動態樹型菜單的處理代碼,如果大家有興趣的話,就和我一起來看看我是如何實現的吧:)
  
  首先,我們需要一個數據庫,在這個數據庫中,我們建立以下一張表:
  
  CREATE TABLE menu (
  id tinyint(4) NOT NULL auto_increment,
  parent_id tinyint(4) DEFAULT 0 NOT NULL,
  name varchar(20),
  url varchar(60),
  Prima(最完善的虛擬主機管理系統)RY KEY (id)
  );
  
  這張表中 id 為索引
  parent_id 用來保存上一級菜單的id號,如果是一級菜單則為0
  name 為菜單的名稱,也就是要在頁面上顯示的菜單內容
  url 如果某菜單為末級菜單,則需要指定該連接的url地址,這個字段就是用來保存此地址的,其他非末級菜單,該字段為空
  
  好了,數據庫有了,你就可以添加一些記錄了,下面是我做測試的時候,使用的一些記錄:
  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, 網絡會議, );
  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, 召開會議, http://localhost/communication/convence_meeting.php(做為現在的主流開發語言));
  INSERT INTO menu VALUES ( 14, 6, 會議查詢, http://localhost/communication/search_meeting.php(做為現在的主流開發語言));
  
  在添加記錄的時候,一定要注意,非一級菜單的parent_id一定要指定為上級菜單的ID號,否則你的菜單是不會顯示出來的:)
  
  好了!有了數據庫,下面就是通過php(做為現在的主流開發語言),JavaScript把菜單從數據庫中讀出來,並顯示出來了:)
  
  1、JavaScript腳本:
  function ShowMenu(MenuID)
  {
  if(MenuID.style.display=="none")
  {
  MenuID.style.display="";
  }
  else
  {
  MenuID.style.display="none";
  }
  }
  這個腳本很簡單,就是用來響應點擊某個菜單被點擊的事件的。
  
  2、CSS文件: <!-- 表格樣式 -->
  TD {
  FONT-FAMILY: "Verdana", "宋體"; FONT-SIZE: 12px; LINE-HEIGHT: 130%; letter-spacing:1px

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved