用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 删除cookie和浏览器重定向
Mar 16 PHP
frename PHP 灵活文件命名函数 frename
Sep 09 PHP
Google Voice 短信发送接口PHP开源版(2010.5更新)
Jul 22 PHP
php 生成文字png图片的代码
Apr 17 PHP
php懒人函数 自动添加数据
Jun 28 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
Sep 20 PHP
PHP中的多行字符串传递给JavaScript的两种方法
Jun 19 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
laravel 5.4中实现无限级分类的方法示例
Jul 27 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
PHP simplexml_load_file()函数讲解
Feb 03 PHP
Laravel框架文件上传功能实现方法示例
Apr 16 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&amp;MYSQL分页原理及实现
2007/01/02 PHP
php中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
webstorm+vue初始化项目的方法
2018/10/18 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
vue实现滑动超出指定距离回顶部功能
2019/07/31 Javascript
在vue-cli创建的项目中使用sass操作
2020/08/10 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
Python实现的百度站长自动URL提交小工具
2014/06/27 Python
Python使用pandas处理CSV文件的实例讲解
2018/06/22 Python
超简单使用Python换脸实例
2019/03/27 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
2019/07/01 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
PyTorch安装与基本使用详解
2020/08/31 Python
Python与C/C++的相互调用案例
2021/03/04 Python
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
护理学专业推荐信
2013/12/03 职场文书
技校生自我鉴定
2013/12/08 职场文书
奥巴马的演讲稿
2014/05/15 职场文书
争先创优公开承诺书
2014/08/30 职场文书
部队2014年终工作总结
2014/11/27 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
学生病假条怎么写
2015/08/17 职场文书
关于mysql中string和number的转换问题
2022/06/14 MySQL