PHP的开合式多级菜单程序


Posted in PHP onOctober 09, 2006

# --------------------------------------------------------
# 数据表的结构 '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)
);
# -------------------------------------------------
#数据表内的内容,根据具体情况而定
# -------------------------------------------------
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');

<?
//树型目录结构模板程序
//菜单目录库字段说明:
//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="root";
$db_password="zmxj";
$db_name="joss";
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);
?>

PHP 相关文章推荐
PHP个人网站架设连环讲(一)
Oct 09 PHP
缓存技术详谈―php
Dec 14 PHP
php array_slice函数的使用以及参数详解
Aug 30 PHP
PHP 向右侧拉菜单实现代码,测试使用中
Nov 03 PHP
php下保存远程图片到本地的办法
Aug 08 PHP
PHP中Fatal error session_start()错误解决步骤
Aug 05 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
Apr 08 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 PHP
PHP使用两个栈实现队列功能的方法
Jan 15 PHP
实例解析php的数据类型
Oct 24 PHP
PHP如何透过ODBC来存取数据库
Oct 09 #PHP
在线短消息收发的程序,不用数据库
Oct 09 #PHP
PHP网站提速三大“软”招
Oct 09 #PHP
用PHP发电子邮件
Oct 09 #PHP
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 #PHP
一段php加密解密的代码
Oct 09 #PHP
PHP开发文件系统实例讲解
Oct 09 #PHP
You might like
967 个函式
2006/10/09 PHP
最省空间的计数器
2006/10/09 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
2014/11/22 PHP
THINKPHP内容分页代码分享
2015/01/14 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
In Javascript Class, how to call the prototype method.(three method)
2007/01/09 Javascript
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
JavaScript输出所选择起始与结束日期的方法
2017/07/12 Javascript
Vue-Router模式和钩子的用法
2018/02/28 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
关于layui 弹出层一闪而过就消失的解决方法
2019/09/09 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
微信小程序tab左右滑动切换功能的实现代码
2021/02/08 Javascript
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
Python装饰器用法实例总结
2018/02/07 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
Ramy Brook官网:美国现代女装品牌
2019/06/18 全球购物
澳大利亚在线性感内衣商店:Fantasy Lingerie
2021/02/07 全球购物
会计专业自荐信范文
2013/12/02 职场文书
感恩教育活动总结
2014/05/05 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
乡镇党建工作汇报材料
2014/10/27 职场文书
党员进社区活动总结
2015/05/07 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers
教你怎么用Python实现多路径迷宫
2021/04/29 Python