10月 28
以下的代码适用于大量数据的情况,加载时并没有对所有数据全部加载,而是取相应级数的数据加载,同样也支持N级菜单。不过暂时没有时间来修改,使之使用AJAX加载。有时间再说。
来源:http://www.7880.com/info/Article-28836620.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Horizontal Drop Down Menus</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

<?php
  //树型目录结构模板程序   
  //菜单目录库字段说明:   
  //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 "&nbsp;&nbsp;";
                }
        $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="test";
  $db_password="test";
  $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);

  $menu_grade_temp = @intval($_GET['menu_grade_temp']);
  $menu_superior_temp = @($_GET['menu_superior_temp']);
  //第一次执行初始化   
  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');
*/
   
?>
</body>
</html>
 

点击察看示例
Defined tags for this entry: ,

作者 rollenc

| 主要出源 (0)
请对 365 天内更新的文章进行打分
当前分数: none 。 0 次打分。 295 次点击
Bookmark 代码模块一:dmenu tree 3  at del.icio.us Digg 代码模块一:dmenu tree 3 Mixx 代码模块一:dmenu tree 3 Bloglines 代码模块一:dmenu tree 3 Technorati 代码模块一:dmenu tree 3 Fark this: 代码模块一:dmenu tree 3 Bookmark 代码模块一:dmenu tree 3  at YahooMyWeb Bookmark 代码模块一:dmenu tree 3  at Furl.net Bookmark 代码模块一:dmenu tree 3  at reddit.com Bookmark 代码模块一:dmenu tree 3  at blinklist.com Bookmark 代码模块一:dmenu tree 3  at Spurl.net Bookmark 代码模块一:dmenu tree 3  at NewsVine Bookmark 代码模块一:dmenu tree 3  at Simpy.com Bookmark 代码模块一:dmenu tree 3  at blogmarks Bookmark 代码模块一:dmenu tree 3  with wists Bookmark 代码模块一:dmenu tree 3  at Ma.gnolia.com wong it! Bookmark using any bookmark manager! Stumble It!

0 引用

  1. 没有引用

0 回复

回复显示方式(直线程 | 分线程)
  1. 没有回复

新增回复


You can use [geshi lang=lang_name [,ln={y|n}]][/lang] tags to embed source code snippets
电子邮件地址将不会被显示,而仅将被用于发送电子邮件通知

为了阻止机器人提交垃圾回复,请在相应的文本框中输入你在下面的图片中所看到的字符串。只有在你输入的字符串和图片中的字符串吻合的情况下,你的回复才能被成功提交。请确认你的浏览器支持、并且已经开启了cookies功能,否则的话,你的回复无法被正确地验证。
CAPTCHA