用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 20 PHP
PHP extract 将数组拆分成多个变量的函数
Jun 30 PHP
php替换超长文本中的特殊字符的函数代码
May 22 PHP
php 操作调试的方法
Jul 12 PHP
PHP将XML转数组过程详解
Nov 13 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
Jan 30 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
Laravel中错误与异常处理的用法示例
Sep 16 PHP
PHP addAttribute()函数讲解
Feb 03 PHP
PHP迭代器和生成器用法实例分析
Sep 28 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 PHP
基于php解决json_encode中文UNICODE转码问题
Nov 10 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
PHP 文件扩展名 获取函数
2009/06/03 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
强制设为首页代码
2006/06/19 Javascript
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
URL地址中的#符号使用说明
2011/02/12 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
浅析Ajax语法
2016/12/05 Javascript
JavaScript 总结几个提高性能知识点(推荐)
2017/02/20 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
Vue源码解读之Component组件注册的实现
2018/08/24 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
浅谈关于iview表单验证的问题
2018/09/29 Javascript
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
[02:57]DOTA2亚洲邀请赛 SECRET战队出场宣传片
2015/02/07 DOTA
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
django实现后台显示媒体文件
2020/04/07 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
python的数学算法函数及公式用法
2020/11/18 Python
python爬虫分布式获取数据的实例方法
2020/11/26 Python
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
菲律宾旅游网站:Expedia菲律宾
2017/10/11 全球购物
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
特岗教师个人总结
2015/02/10 职场文书
幼儿园校车安全责任书
2015/05/08 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
企业法人代表证明书
2015/06/18 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript