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的FTP学习(二)[转自奥索]
Oct 09 PHP
vBulletin HACK----关于排版的两个HACK
Oct 09 PHP
php set_time_limit(0) 设置程序执行时间的函数
May 26 PHP
将一维或多维的数组连接成一个字符串的php代码
Aug 08 PHP
PHP文件上传主要代码讲解
Sep 30 PHP
浅谈Eclipse PDT调试PHP程序
Jun 09 PHP
php生成shtml类用法实例
Dec 09 PHP
php中使用url传递数组的方法
Feb 11 PHP
php根据指定位置和长度获得子字符串的方法
Mar 17 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
Sep 25 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
利用php + Laravel如何实现部署自动化详解
Oct 11 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
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
深入PHP操作MongoDB的技术总结
2013/06/02 PHP
领悟php接口中interface存在的意义
2013/06/27 PHP
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
解释&amp;&amp;和||在javascript中的另类用法
2014/07/28 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
JavaScript访问字符串中单个字符的两种方法
2015/07/03 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
jquery 键盘事件的使用方法详解
2017/09/13 jQuery
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
[01:03:38]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS CIS
2014/05/22 DOTA
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
python实现数组插入新元素的方法
2015/05/22 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
美国儿童服装、家具和玩具精品店:Maisonette
2019/11/24 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
旅游管理实习自我鉴定
2013/09/29 职场文书
管理科学大学生求职信
2013/11/13 职场文书
平遥古城导游词
2015/02/03 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫
OpenCV实现常见的四种图像几何变换
2022/04/01 Python
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技