用PHP实现多级树型菜单


Posted in PHP onOctober 09, 2006

<?   
  //树型目录结构模板程序   
  //菜单目录库字段说明:   
  //menu_id 菜单项目 id   
  //menu 菜单名称   
  //menu_grade 菜单等级 1 为主菜单 2 为二级菜单 ........   
  //menu_superior 上一级菜单 id 号   

  function my_menu($menu_content,$i,$menu_grade_temp,$menu_superior_temp)   
  {   
    global $PHP_SELF;   
    $temp1=$menu_grade_temp+1;   
    $menu_superior_temp_array=split("/",$menu_superior_temp);   
    for ($t=0;$t<$i;$t++)   
    {   
      $menu_array=split("/",$menu_content[$t]);   
      If(($menu_array[2]==$menu_grade_temp)&&($menu_array[3]==$menu_superior_temp_array[$menu_grade_temp-1]))   
      {   
        for($p=1;$p<=$menu_grade_temp;$p++){echo "  ";}   
        $temp3=$menu_superior_temp_array;   
        $temp3[$menu_grade_temp]=$menu_array[0];   
        $temp2=implode("/",$temp3);   
        if ($menu_array[0]==$menu_superior_temp_array[$temp1-1])   
        {   
          $temp5=$temp1-1;   
          $temp3[$menu_grade_temp]="";   
          $temp6=implode("/",$temp3);   
          echo "<a href="$PHP_SELF?menu_grade_temp=".$temp5."&menu_superior_temp=$temp6">$menu_array[1]</a><br>";   
          my_menu($menu_content,$i,$temp1,$temp2);   
        }   
        else   
        {   
          $temp3[$menu_grade_temp+1]="";   
          $temp6=implode("/",$temp3);   
          echo "<a href="$PHP_SELF?menu_grade_temp=".$temp1."&menu_superior_temp=$temp6">$menu_array[1]</a><br>";   
        }   
      }   
    }   
  }   
  // 连接 MySql 数据库   
  $db_host="localhost";   
  $db_user="dkj";   
  $db_password="123";   
  $db_name="test";   
  mysql_connect($db_host,$db_user,$db_password);   
  mysql_select_db($db_name);   

  //从数据库中取得数据   
  $query_string="select * from menu order by menu_grade";   
  $db_data=mysql_query($query_string);   

  //第一次执行初始化   
  if ($menu_grade_temp=="")   
  {   
    $menu_superior_temp=0;   
  }   

  //将所有的信息读入数组,并统计数组个数   
  $i=0;   
  while (list($menu_id,$menu,$menu_grade,$menu_superior)=mysql_fetch_row($db_data))   
  {   
    $menu_content[$i]=$menu_id."/".$menu."/".$menu_grade."/".$menu_superior;   
    $i++;   
  }   
  my_menu($menu_content,$i,1,$menu_superior_temp);   

  /* 附数据库结构及模拟数据   
  # phpMyAdmin MySQL-Dump   
  #   
  # 主机: localhost 数据库 : test   
  # --------------------------------------------------------   

  #   
  # 数据表的结构 'menu'   
  #   

  CREATE TABLE menu (   
  menu_id int(11) NOT NULL auto_increment,   
  menu varchar(20) NOT NULL,   
  menu_grade int(11) NOT NULL,   
  menu_superior int(11) NOT NULL,   
  UNIQUE menu_id (menu_id)   
  );   

  #   
  # 导出下面的数据库内容 'menu'   
  #   

  INSERT INTO menu VALUES( '1', '计算机', '1', '0');   
  INSERT INTO menu VALUES( '2', '编程', '2', '1');   
  INSERT INTO menu VALUES( '3', '网络', '2', '1');   
  INSERT INTO menu VALUES( '4', 'PHP与MySql', '3', '2');   
  INSERT INTO menu VALUES( '5', 'C语言', '3', '2');   
  INSERT INTO menu VALUES( '6', '网页制作', '3', '3');   
  INSERT INTO menu VALUES( '7', 'TCP、IP协议', '3', '3');   
  INSERT INTO menu VALUES( '8', '数学', '1', '0');   
  INSERT INTO menu VALUES( '9', '高等数学', '2', '8');   
  INSERT INTO menu VALUES( '10', '线性代数', '3', '9');   
  INSERT INTO menu VALUES( '11', '离散数学', '3', '9');   
  INSERT INTO menu VALUES( '12', '初等数学', '2', '8');   
  INSERT INTO menu VALUES( '13', '文学', '1', '0');   
  INSERT INTO menu VALUES( '14', '中国文学', '2', '13');   
  INSERT INTO menu VALUES( '15', 'php', '4', '4');   
  INSERT INTO menu VALUES( '16', 'mysql', '4', '4');   
*/   
?>  

PHP 相关文章推荐
PHP概述.
Oct 09 PHP
图形数字验证代码
Oct 09 PHP
php下保存远程图片到本地的办法
Aug 08 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
Apr 26 PHP
PHP开发注意事项总结
Feb 04 PHP
利用php + Laravel如何实现部署自动化详解
Oct 11 PHP
详解PHP中mb_strpos的使用
Feb 04 PHP
购物车实现的几种方式优缺点对比
May 02 PHP
php实现的PDO异常处理操作分析
Dec 27 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
使用composer安装使用thinkphp6.0框架问题【视频教程】
Oct 01 PHP
PHP4在Windows2000下的安装
Oct 09 #PHP
模仿OSO的论坛(五)
Oct 09 #PHP
基于mysql的论坛(2)
Oct 09 #PHP
基于mysql的论坛(1)
Oct 09 #PHP
基于mysql的论坛(4)
Oct 09 #PHP
基于mysql的论坛(5)
Oct 09 #PHP
基于mysql的论坛(6)
Oct 09 #PHP
You might like
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
javascript图片相似度算法实现 js实现直方图和向量算法
2014/01/14 Javascript
jQuery DateTimePicker 日期和时间插件示例
2017/01/22 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
详细分析单线程JS执行问题
2017/11/22 Javascript
Vue.js组件间的循环引用方法示例
2017/12/27 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
2018/08/14 jQuery
jquery获取元素到屏幕四周可视距离的方法
2018/09/05 jQuery
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
JS实现密码框效果
2020/09/10 Javascript
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
python实现简单神经网络算法
2018/03/10 Python
windows下安装Python的XlsxWriter模块方法
2018/05/03 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
Python中的字符串切片(截取字符串)的详解
2019/05/15 Python
Python发展史及网络爬虫
2019/06/19 Python
Python学习笔记之集合的概念和简单使用示例
2019/08/22 Python
屏蔽Django admin界面添加按钮的操作
2020/03/11 Python
详解Scrapy Redis入门实战
2020/11/18 Python
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
国际贸易专业推荐信
2013/11/15 职场文书
给领导的致歉信范文
2014/01/13 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
2019财务转正述职报告
2019/06/27 职场文书