php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
时间:2006-12-31
来源:互联网
测试地址: http://www.mlmm.cn/mypage/?name=ceshi
在模板里的使用方法:
很简单的
1.先把 <script language="JavaScript" src="../include/js/regions.js"></script>
加到 header.html 页
2.把 regionss() 函数 加到 /include/tag.php 里
3.在你网站的根目录建立个 regions.php 文件
4.在你的模板的适当的地方加入 {$regionss(中华人民共和国)} 即可
注意: 表单的名字可根据你的需要可以自己修改...
测试页代码:
[Copy to clipboard]
代码:
<html><head>
<meta http-equiv="Content-Type" c />
<title>php+ajax动态生成下拉菜单</title>
<script language="JavaScript" src="../include/js/regions.js"></script>
</head>
<body>
<form name="form1" method="post" action="">
<tr><td>{$regionss(中华人民共和国)}</td></tr>
</form>
</body>
</html>
CODE:
[Copy to clipboard]
代码:
//省市地3级联动下拉菜单函数 regionss 省.市.地function regionss($country="中华人民共和国")
{
global $db; $i = 1;
$text="<select id=\"select1\" name=\"select1\" onchange=\"startRequest()\" style=\"width:90px;\"><option value=\"\">省/市/自治区</option>\n";
$result = $db->query("SELECT province FROM ".TABLE_PROVINCE." WHERE country='$country' ORDER BY provinceid");
while($r = $db->fetch_array($result))
{
$text .= "<option value=".$r['province'].">".$r['province']."</option> ";
$i++;
}
$text.="</select>";
$text.=" <select id=\"select2\" name=\"select2\" onchange=\"startRequesta()\" style=\"width:90px;\"><option value=\"\">市/县/区</option></select>\n";
$text.="<select id=\"select3\" name=\"select3\" style=\"width:90px;\"><option value=\"\">县级市/县</option></select>\n";
return $text;
}
CODE:
[Copy to clipboard]
代码:
//var ab = new Array();var xmlHttp;
var xmlHttpa;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function createXMLHttpRequesta() {
if (window.ActiveXObject) {
xmlHttpa = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttpa = new XMLHttpRequest();
}
}
function startRequest() {
createXMLHttpRequest();
createXMLHttpRequesta();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttpa.onreadystatechange = handleStateChangearea;
document.getElementById('select2').options.length = 0;
document.getElementById('select3').options.length = 0;
var url = document.form1.select1.value;
var qurl = "/regions.php?province="+url+"&time="+new Date().getTime();
xmlHttp.open("GET", qurl, true);
xmlHttp.send(null);
//setTimeout("startRequest()",2000);
}
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
var obj = document.getElementById('select2'); //将服务器返回的字符串写到页面中ID为select2的区域
obja = document.getElementById('select3'); //将服务器返回的字符串写到页面中ID为select3的区域
eval(xmlHttp.responseText);
}
}
}
function handleStateChangearea() {
eval(xmlHttpa.responseText);
}
//var ab = new Array();
function startRequesta() {
createXMLHttpRequesta();
xmlHttpa.onreadystatechange = handleStateChangea;
document.getElementById('select3').options.length = 0;
var url = document.form1.select2.value;
var qurl = "/regions.php?city="+url+"&time="+new Date().getTime();
xmlHttpa.open("GET", qurl, true);
xmlHttpa.send(null);
//setTimeout("startRequest()",2000);
}
function handleStateChangea() {
if(xmlHttpa.readyState == 4) {
if(xmlHttpa.status == 200) {
var obja = document.getElementById('select3');
eval(xmlHttpa.responseText);
//将服务器返回的字符串写到页面中ID为select3的区域
}
}
}
CODE:
[Copy to clipboard]
代码:
<?phprequire "common.php";
$city = $city ? $city : "";
$area = $area ? $area : "";
if($province && $city==''){
global $db; $i = 1;
$result = $db->query("SELECT DISTINCT city FROM ".TABLE_CITY." WHERE province='$province' ORDER BY cityid");
while($r = $db->fetch_array($result))
{
$r[city]=iconv('gb2312','UTF-8',$r[city]);
echo "obj.options[obj.options.length] = new Option('".$r[city]."','".$r[city]."');\n";
$i++;
}
$resultarea = $db->query("SELECT DISTINCT city FROM ".TABLE_CITY." WHERE province='$province' ORDER BY cityid");
$r = $db->fetch_array($resultarea);
$city = $r[city];
$resulta = $db->query("SELECT DISTINCT area FROM ".TABLE_CITY." WHERE city='$city' ORDER BY cityid");
while($ra = $db->fetch_array($resulta))
{
$ra[area]=iconv('gb2312','UTF-8',$ra[area]);
echo "obja.options[obja.options.length] = new Option('".$ra[area]."','".$ra[area]."');\n";
$i++;
}
}
if($city && $province==''){
global $db; $i = 1;
$result = $db->query("SELECT DISTINCT area FROM ".TABLE_CITY." WHERE city='$city' ORDER BY cityid");
while($r = $db->fetch_array($result))
{
$r[area]=iconv('gb2312','UTF-8',$r[area]);
echo "obja.options[obja.options.length] = new Option('".$r[area]."','".$r[area]."');\n";
$i++;
}
}
?>
采用的是phpcms3.0里自带的数据库,我没有进行任何改动
本程序可以在phpcms3.0里直接使用,若在其他地方使用请自己修改
有什么问题请咨询QQ: 805830
哪位朋友有精确到乡级的数据库共享下......
[ 本帖最后由 mlmm 于 2007-8-22 09:52 编辑 ]
作者: mlmm 发布时间: 2006-12-31

作者: Nickboy 发布时间: 2006-12-31
作者: leehui1983 发布时间: 2006-12-31
作者: laopi 发布时间: 2007-01-01


不错
作者: fengyun 发布时间: 2007-01-01
作者: isno 发布时间: 2007-01-04
作者: edisonwu 发布时间: 2007-01-09
作者: zssupertim 发布时间: 2007-01-13
作者: yustar 发布时间: 2007-01-13

不错。支持一下!
楼主可否给我传份源码?
作者: 特蓝克斯 发布时间: 2007-01-15
作者: 编程骇客 发布时间: 2007-01-19
作者: jeromenie 发布时间: 2007-02-05
作者: squaly 发布时间: 2007-02-26
作者: mlmm 发布时间: 2007-08-08
作者: caiyuerui 发布时间: 2007-08-15
请楼主 使用PHP CODE 标签来操作帖子里面的代码
这样我们看起来更加舒服点:)
作者: 逆雪寒 发布时间: 2007-08-21
代码:
已经加了作者: mlmm 发布时间: 2007-08-22
作者: yxqadr 发布时间: 2007-09-03
作者: hotbone 发布时间: 2007-09-04
作者: redcolt 发布时间: 2007-09-12
作者: showphp 发布时间: 2007-09-12
作者: showphp 发布时间: 2007-09-12
引用:
原帖由 showphp 于 2007-9-12 22:33 发表论坛百变?
http://www.mlmm.cn/weather/Portrait.php?id=.gif
作者: mlmm 发布时间: 2007-09-12
作者: yangyunlife 发布时间: 2007-09-13
作者: yangyunlife 发布时间: 2007-09-13



作者: springparker 发布时间: 2008-02-01
作者: kth007 发布时间: 2008-03-12
作者: microskype 发布时间: 2008-06-17
作者: cybmm 发布时间: 2008-06-18
这个数据库我也有,这个好像比较全的了。
[ 本帖最后由 adleyliu 于 2008-6-18 15:44 编辑 ]
作者: adleyliu 发布时间: 2008-06-18
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28