落伍首发 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 相关文章推荐
使用apache模块rewrite_module (转)
Feb 14 PHP
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
Mar 07 PHP
附件名前加网站名
Mar 23 PHP
PHP mb_convert_encoding 获取字符串编码类型实现代码
Apr 26 PHP
Php Image Resize图片大小调整的函数代码
Jan 17 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
Jun 10 PHP
利用php获取服务器时间的实现代码
Jun 07 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
Jul 01 PHP
php防止站外远程提交表单的方法
Oct 20 PHP
PHP中substr()与explode()函数用法分析
Nov 24 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
详解PHP 7.4 中数组延展操作符语法知识点
Jul 19 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 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
从性能方面考虑PHP下载远程文件的3种方法
2015/12/29 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
javascript[js]获取url参数的代码
2007/10/17 Javascript
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
Javascript之图片的延迟加载的实例详解
2017/07/24 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
js+html实现点名系统功能
2019/11/05 Javascript
详解一些适用于Node.js的命名约定
2019/12/08 Javascript
python快速查找算法应用实例
2014/09/26 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
对python 调用类属性的方法详解
2019/07/02 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
浅谈three.js中的needsUpdate的应用
2012/11/12 HTML / CSS
html如何对span设置宽度
2019/10/30 HTML / CSS
会计专业毕业生自我评价
2013/09/25 职场文书
生物技术研究生自荐信
2013/11/12 职场文书
求职自荐信范文格式
2013/11/29 职场文书
大学班级文化建设方案
2014/05/06 职场文书
小学安全汇报材料
2014/08/14 职场文书
岳庙导游词
2015/02/04 职场文书
经济纠纷起诉状
2015/05/20 职场文书
Go使用协程交替打印字符
2021/04/29 Golang
Python中else的三种使用场景
2021/06/16 Python
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记