数据库联动菜单
❶ dreamweaver 怎么制作三级联动下拉菜单 (数据库MDB格式的)
建议先不涉及数据库,不然会非常麻烦。先介绍一个二级下拉,然后可以自己拓展为三级。
一般情况下这种情况是来对二级的目录有用,对于现在网站流传的JS好多种,但都无外乎那些令像我这样的菜鸟晕头转向的JS代码。。一下子for...一下子array的。
首先得建一个表,当然,如果你的表中就已经建好目录的话,那这一步可以省略了。但有一点要提醒:这个表是我这个例子的使用依据(不知道这样说对不对)。
由于我用的表是ACCESS的,所以建表就不说了,只列出这个两个表的相应的字段名(数据库名:db.mdb):
表名:type_tree ——父类
字段:type_id(自动编号) type_name(类别名称)
表名:s_type ——子类
字段:id(自动编号) s_name(子类别名称) type_id(父类ID)——与父类表相对应
现在是建立数据库连接:
Dim conn, connStr
Set conn = server.CreateObject("ADODB.Connection")connStr = "Provider = Microsoft.jet.oledb.4.0;"connStr = connStr & "Data Source = " & server.mappath("db.mdb")Conn.Open connStr
以上代码应当不用再解释了吧,都是大家常用的代码。。
现在进入实质性的操作:)
二级关联菜单一般情况下都是以下拉菜单来做,这里我也不例外,一样用下拉菜单来做。
只不过这里有一个地方不一样哦。
就是一个用的是跳转菜单,这一点很重要,成功与否全看这个菜单有没有用对!以下是这个跳转菜单的代码!
<select name="first" onChange="MM_jumpMenu('parent',this,0)">
<%
sql = "select [type_id],[type_name] from [type_tree]"
set rs = conn.execute(sql)'取得父类的ID及名称
if rs.eof or rs.bof then
response.write "<option>-----</option>" '如果没有记录,就显示-----
else
while not(rs.eof or rs.bof) '有记录,就将父名称列出来,形成下拉。
response.write ("<option value='?sec=" & rs(0) & "'")
if cstr(rs(0)) = request.querystring("sec") then
response.write "selected"
end if
response.write (">" & rs(1) & "</option>")
rs.movenext
wend
rs.movefirst '将游标移到第一条,以备下面之用。
end if
%>
</select>
哦,对了,还有一段代码忘了贴出来了,这个是跳转菜音的关键啊,看我粗心的!补上补上:
<script language="javascript" type="text/javascript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>
以上代码贴到<head>里,是DW生成,我看不太懂什么意思,所以不注解了。现在是菜单的二级部分,这里不是用跳转菜单,只是一个列表罢了,所以代码跟上面的跳转菜单也就差一个onchange这个函数。
以下是这个菜单的代码,由于循环跟判断相对上面来说复杂一些,大伙要看清楚一点哦。
<select name="second">
<%if rs.eof or rs.bof then
response.write ("<option>--------</option>")
else
if request.querystring("sec") = "" then '获取跳转之后的sec值
temp=rs(0) 如果为空,就把temp的值设为第一条记录的值
else
temp = request.querystring("sec") '否则就为收到的值
end if
subsql = "select [s_name] from [s_type] where type_id='"&temp&"'"
set subrs = conn.execute(subsql) '列出一切资料为temp的记录
if subrs.eof or subrs.bof then
response.write ("<option>-----</option>")
'如果没有记录,则在这个列表中显示"-----"
else
while not(subrs.eof or subrs.bof)'否则就用循环列出一切符合条件的记录。
response.write ("<option value=" & subrs(0) & ">" & subrs(0) & "</option>")
subrs.movenext
wend
end if
end if
'关闭所有的记录集
subrs.close
set subrs = nothing
rs.close
set rs = nothing
conn.close
set conn = nothing
%>
</select>
到现在为止,已经将这个二级菜单的制过程做完了,很简单的一个看把我给说的。大家看不懂再说吧,反正我已经不知道该怎么说了。高手们不吝赐教啊。
❷ MySQL实现三级联动选择菜单轻松搭建树形菜单结构mysql三级联动
MySQL实现三级联动选择菜单,轻松搭建树形菜单结构!
随着互联网规模的不断扩大,网站的复杂度也在不断提高,树形菜单结构成为了网站设计中常见的一种形式。为了方便用户的选择,常常需要设计出多级菜单,以便用户快速找到自己需要的内容。本文将介绍如何使用MySQL实现三级联动选择菜单,并且轻松地搭建出树形菜单结构。
一、数据库设计
首先需要设计好数据库结构。在本案例中,我们将设计一个名为“region”的数据库,其中包含三个表:“province”、“city”和“district”,分别代表省份、城市和区/县。每一个表都包含以下字段:id、name和parent_id,其中id为主键,name为地区名,parent_id为该地区的上一级地区的id。
CREATE TABLE `province` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘省份id’,
`name` varchar(20) NOT NULL COMMENT ‘省份名称’,
`parent_id` int(10) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘上级行政区划id’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’省份表’;
CREATE TABLE `city` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘城市id’,
`name` varchar(30) NOT NULL COMMENT ‘城市名称’,
`parent_id` int(10) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘省份id’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’城市表’;
CREATE TABLE `district` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘区县id’,
`name` varchar(50) NOT NULL COMMENT ‘区县名称’,
`parent_id` int(10) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘城市id’,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’区县表’;
二、插入数据
接下来需要插入一些数据。假设我们要插入北京市的信息,那么可以按照以下方式进行插入:
INSERT INTO `province` (`id`, `name`, `parent_id`) VALUES (1, ‘北京市’, 0);
INSERT INTO `city` (`id`, `name`, `parent_id`) VALUES (1, ‘北京市’, 1);
INSERT INTO `district` (`id`, `name`, `parent_id`) VALUES (1, ‘东城区’, 1);
在插入完数据后,可以通过SELECT语句来查看插入的结果:
SELECT * FROM `province` WHERE `name` = ‘北京市’;
SELECT * FROM `city` WHERE `name` = ‘北京市’;
SELECT * FROM `district` WHERE `name` = ‘东城区’;
三、实现页面
在完成数据库设计和数据插入之后,接下来需要在页面上实现三级联动选择菜单。在本案例中,我们选择使用HTML+JavaScript来实现这个功能。
在HTML文件中,我们需要先创建三个菜单框,代码如下:
请选择省份
请选择城市
请选择区县
然后,在JavaScript文件中,我们需要编写以下代码,来实现根据用户选择的省份,动态改变城市和区县的选项:
$(document).ready(function() {
$(“#province”).change(function() {
var provinceid = $(this).val();
if (provinceid != “”) {
$.ajax({
type: “POST”,
url: “getCity.php”,
data: “provinceid=”+provinceid,
cache: false,
success: function(html) {
$(“#city”).html(html);
$(“#district”).html(“请选择区县”);
}
});
} else {
$(“#city”).html(“请选择城市”);
$(“#district”).html(“请选择区县”);
}
});
$(“#city”).change(function() {
var cityid = $(this).val();
if (cityid != “”) {
$.ajax({
type: “POST”,
url: “getDistrict.php”,
data: “cityid=”+cityid,
cache: false,
success: function(html) {
$(“#district”).html(html);
}
});
} else {
$(“#district”).html(“请选择区县”);
}
});
});
这段JavaScript代码中,我们使用了jQuery来实现AJAX异步请求,并且根据用户选择的省份和城市,调用getCity.php和getDistrict.php来查询数据库中对应的城市和区县信息,然后将结果动态显示在相应的菜单框中。具体的php代码如下:
getCity.php
$provinceid = $_POST[‘provinceid’];
$sql = “SELECT * FROM `city` WHERE `parent_id` = ‘”.$provinceid.”‘”;
$result = mysql_query($sql);
echo “请选择城市”;
while ($row = mysql_fetch_array($result)) {
echo “”.$row[‘name’].””;
}
getDistrict.php
$cityid = $_POST[‘cityid’];
$sql = “SELECT * FROM `district` WHERE `parent_id` = ‘”.$cityid.”‘”;
$result = mysql_query($sql);
echo “请选择区县”;
while ($row = mysql_fetch_array($result)) {
echo “”.$row[‘name’].””;
}
四、测试
我们需要将HTML文件和JavaScript文件放到服务器上,并且测试其效果。在测试过程中,需要注意以下几点:
1. 需要在服务器上运行MySQL,并且创建好region数据库,并且插入了一些测试数据。
2. 需要在JavaScript文件中修改getCity.php和getDistrict.php文件的路径(如果不在同一目录下的话),以保证AJAX异步请求能够正确调用。
3. 在测试之前需要先引入jQuery库,并且保证能够正常访问。
下面是测试结果的示例图,可以看到三级联动菜单已经成功实现:
![MySQL实现三级联动选择菜单][1]
总结
通过本文的介绍,可以看到使用MySQL实现三级联动选择菜单并不是很难。只需要在数据库中设计好地区结构,并且编写一些简单的HTML和JavaScript代码,就可以轻松地搭建出树形菜单结构,帮助用户快速找到需要的内容。
参考资料:
1. jQuery官网:http://jquery.com/
2. W3Schools:http://www.w3schools.com/
3. MySQL官网:http://www.mysql.com/
[1]: https://img-blog.csdn.net/20170824103348579?watermark/2/text//font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/85/progressive/true
❸ PHP+MySQL数据库查询四级下拉菜单联动问题。在网上看了很多例子,但自身
比如你有一个城市表 city,有字段id和city_name, 代码如下:
<?php
$sql = 'select * from city';
$res = mysql_query($sql);
$cities = array();
while ($row = mysql_fetch_assoc($res) )
{
$cities[$row['id']] = $row['name'];
}
?>
<select name="PubForm[city]" class="sgselect scate" id="city">
<option selected="selected" value="">-- 请选择城市 --</option>
<?php foreach ( $cities as $id=>$city ) { ?>
<option value="<?php echo $id; ?>"><?php echo $city; ?></option>
</select>
原理就是从mysql查询出所有城市的数据并弄成一个数组$cities ,然后循环$cities,按照下拉表单的格式输出option选项就好了