落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码


Posted in PHP onDecember 16, 2006

绝对原创  
测试地址: http://www.mlmm.cn/mypage/?name=ceshi

测试页代码:

<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  
<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>

regionss 函数代码:
QUOTE:
//省市地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;  
} 

regions.js 的代码:
//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的区域  
        }   
    }   
} 

数据岛 regions.php 页面代码
<?php   
require "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里直接使用,若在其他地方使用请自己修改

PHP 相关文章推荐
提升PHP执行速度全攻略(下)
Oct 09 PHP
php学习之 认清变量的作用范围
Jan 26 PHP
windows下开发并编译PHP扩展的方法
Mar 18 PHP
MySQL 日期时间函数常用总结
Jun 12 PHP
php数据库备份还原类分享
Mar 20 PHP
YII实现分页的方法
Jul 09 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
php短网址和数字之间相互转换的方法
Mar 13 PHP
PHP 中 Orientation 属性判断上传图片是否需要旋转
Oct 16 PHP
php关闭warning问题的解决方法
May 17 PHP
redirect_uri参数错误的解决方法(必看)
Feb 16 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
Oct 15 PHP
缓存技术详谈―php
Dec 14 #PHP
PHP面向对象编程快速入门
Dec 14 #PHP
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 #PHP
谈谈新手如何学习PHP
Dec 14 #PHP
php基础知识:类与对象(5) static
Dec 13 #PHP
php基础知识:类与对象(4) 范围解析操作符(::)
Dec 13 #PHP
php基础知识:类与对象(3) 构造函数和析构函数
Dec 13 #PHP
You might like
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
php事件驱动化设计详解
2016/11/10 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
使用UglifyJS合并/压缩JavaScript的方法
2012/03/07 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
JavaScript等比例缩放图片控制超出范围的图片
2013/08/06 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
js 金额格式化来回转换示例
2014/02/23 Javascript
更快的异步执行(setTimeout多浏览器)
2014/08/12 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
koa大型web项目中使用路由装饰器的方法示例
2019/04/02 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
[02:11]2016国际邀请赛中国区预选赛全程回顾
2016/07/01 DOTA
Python实现简单的代理服务器
2015/07/25 Python
Python引用模块和查找模块路径
2016/03/17 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
python实现彩色图转换成灰度图
2019/01/15 Python
Python子类继承父类构造函数详解
2019/02/19 Python
python mysql中in参数化说明
2020/06/05 Python
Python 使用office365邮箱的示例
2020/10/29 Python
Blancsom美国/加拿大:服装和生活用品供应商
2018/07/27 全球购物
学生自我鉴定模板
2013/12/30 职场文书
计算机数据库专业职业生涯规划书
2014/02/08 职场文书
竞争上岗实施方案
2014/03/21 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
前台接待岗位职责范本
2015/04/03 职场文书
2016春节放假通知范文
2015/08/18 职场文书
2015元旦感言
2015/12/09 职场文书
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang
Java 定时任务技术趋势简介
2022/05/04 Java/Android