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 相关文章推荐
基于文本的留言簿
Oct 09 PHP
在线增减.htpasswd内的用户
Oct 09 PHP
网友原创的PHP模板类代码
Sep 07 PHP
php5 apache 2.2 webservice 创建与配置(java)
Jan 27 PHP
PHP设计模式之解释器模式的深入解析
Jun 13 PHP
php实现对两个数组进行减法操作的方法
Apr 17 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
Smarty模板引擎缓存机制详解
May 23 PHP
Yii列表定义与使用分页方法小结(3种方法)
Jul 15 PHP
php常用正则函数实例小结
Dec 29 PHP
PHP实现根据密码长度显示安全条
Jul 04 PHP
PHP判断json格式是否正确的实现代码
Sep 20 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合并两个数组的两种方式的异同
2012/09/14 PHP
php全排列递归算法代码
2012/10/09 PHP
ThinkPHP中自定义目录结构的设置方法
2014/08/15 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
2019/07/15 PHP
JavaScript 事件参考手册
2008/12/24 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
vue loadmore 组件滑动加载更多源码解析
2017/07/19 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
layui实现三级联动效果
2019/07/26 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
javascript实现左右缓动动画函数
2020/11/25 Javascript
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
Python设计模式之观察者模式实例
2014/04/26 Python
python实现得到一个给定类的虚函数
2014/09/28 Python
python实现读取命令行参数的方法
2015/05/22 Python
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
Python处理中文标点符号大集合
2018/05/14 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
PHP面试题集
2016/12/18 面试题
夜大自我鉴定
2013/10/31 职场文书
年度考核自我鉴定
2014/02/02 职场文书
《猫》教学反思
2014/02/26 职场文书
2015年考研复习计划
2015/01/19 职场文书
vue-router中hash模式与history模式的区别
2021/06/23 Vue.js