我一般这样建表:
create table unit (uid int auto_increment,
uname varchar(32),
ulevel int,
parentid int,
PRIMARY KEY uid
)
uid是主键,自动编号,uname是省市区县乡镇的名称,ulevel为级别(可以规定省为1、市为2、……),parentid为上级id,省的上级为0,市的上级为对应的省,……
<html><head>
<title>智能递归菜单-读取数据库</title>
<style>
TD {
FONT-FAMILY: "Verdana", "宋体"FONT-SIZE: 12pxLINE-HEIGHT: 130%letter-spacing:1px
}
A:link {
COLOR: #990000FONT-FAMILY: "Verdana", "宋体"FONT-SIZE: 12pxTEXT-DECORATION: noneletter-spacing:1px
}
A:visited {
COLOR: #990000FONT-FAMILY: "Verdana", "宋体"FONT-SIZE: 12pxTEXT-DECORATION: noneletter-spacing:1px
}
A:active {
COLOR: #990000FONT-FAMILY: "Verdana", "宋体"FONT-SIZE: 12pxTEXT-DECORATION: noneletter-spacing:1px
}
A:hover {
COLOR: #ff0000FONT-FAMILY: "Verdana", "宋体"FONT-SIZE: 12pxTEXT-DECORATION: underlineletter-spacing:1px
}
.Menu {
COLOR:#000000FONT-FAMILY: "Verdana", "宋体"FONT-SIZE: 12pxCURSOR: hand
}
</style>
<script language=javascript>
function ShowMenu(MenuID)
{
if(MenuID.style.display=="none")
{
MenuID.style.display=""
}
else
{
MenuID.style.display="none"
}
}
</script>
</head>
<body>
<?php
//基本变量设置
$GLOBALS["ID"] =1//用来跟踪下拉菜单的ID号
$layer=1//用来跟踪当前菜单的级数
//连接数据库
$Con=mysql_connect("localhost","root","123456")
mysql_select_db("menu")
//提取一级菜单
$sql="select * from menu where parent_id=0"
$result=mysql_query($sql,$Con)
//如果一级菜单存在则开始菜单的显示
if(mysql_num_rows($result)>0) ShowTreeMenu($Con,$result,$layer,$ID)
//=============================================
//显示树型菜单函数 ShowTreeMenu($con,$result,$layer)
//$con:数据库连接
//$result:需要显示的菜单记录集
//layer:需要显示的菜单的级数
//=============================================
function ShowTreeMenu($Con,$result,$layer)
{
//取得需要显示的菜单的项目数
$numrows=mysql_num_rows($result)
//开始显示菜单,每个子菜单都用一个表格来表示
echo "<table cellpadding='0' cellspacing='0' border='0'>"
for($rows=0$rows<$numrows$rows++)
{
//将当前菜单项目的内容导入数组
$menu=mysql_fetch_array($result)
//提取菜单项目的子菜单记录集
$sql="select * from menu where parent_id=$menu[id]"
$result_sub=mysql_query($sql,$Con)
echo "<tr>"
//如果该菜单项目有子菜单,则添加JavaScript onClick语句
if(mysql_num_rows($result_sub)>0)
{
echo "<td width='20'><img src='tree_expand.gif' border='0'></td>"
echo "<td class='Menu' onClick='javascript:ShowMenu(Menu".$GLOBALS["ID"].")'>"
}
else
{
echo "<td width='20'><img src='tree_collapse.gif' border='0'></td>"
echo "<td class='Menu'>"
}
//如果该菜单项目没有子菜单,并指定了超级连接地址,则指定为超级连接,
//否则只显示菜单名称
if($menu[url]!="")
echo "<a href='$menu[url]'>$menu[name]</a>"
else
echo $menu[name]
echo "
</td>
</tr>
"
//如果该菜单项目有子菜单,则显示子菜单
if(mysql_num_rows($result_sub)>0)
{
//指定该子菜单的ID和style,以便和onClick语句相对应
echo "<tr id=Menu".$GLOBALS["ID"]++." style='display:none'>"
echo "<td width='20'></td>"
echo "<td>"
//将级数加1
$layer++
//递归调用ShowTreeMenu()函数,生成子菜单
ShowTreeMenu($Con,$result_sub,$layer)
//子菜单处理完成,返回到递归的上一层,将级数减1
$layer--
echo "</td></tr>"
}
//继续显示下一个菜单项目
}
echo "</table>"
}
?>
<?php
$id = 1
function test()
{
global $id
unset($id)
}
test()
echo"<font class=menu>".($id)."</font>"// 在 PHP 4 中这里会打印出 1
?>
<?php
$a = 1
$b = 2
function Sum()
{
global $a, $b
$b = $a + $b
}
Sum()
echo "<font class=menu>".$b."</font>"
?>
</body>
</html>
呵呵,看咋样,是递归出来的......
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)