落伍首发 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合并数组array_merge函数运算符加号与的区别
Oct 31 PHP
一个简单php扩展介绍与开发教程
Aug 19 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
Sep 05 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
Mar 03 PHP
PHP扩展开发教程(总结)
Nov 04 PHP
Yii2框架BootStrap样式的深入理解
Nov 07 PHP
thinkPHP订单数字提醒功能的实现方法
Dec 01 PHP
php+ajax实现仿百度查询下拉内容功能示例
Oct 20 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 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设置静态内容缓存时间的方法
2014/12/01 PHP
制作安全性高的PHP网站的几个实用要点
2014/12/30 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
JavaScript 的方法重载效果
2009/08/07 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
2015/04/30 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
python监控键盘输入实例代码
2018/02/09 Python
浅析python的优势和不足之处
2018/11/20 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
python中的print()输出
2019/04/12 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
Django的models中on_delete参数详解
2019/07/16 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
Python3常见函数range()用法详解
2019/12/30 Python
给 TensorFlow 变量进行赋值的方式
2020/02/10 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
Django celery异步任务实现代码示例
2020/11/26 Python
python dir函数快速掌握用法技巧
2020/12/09 Python
python实现发送QQ邮件(可加附件)
2020/12/23 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
史上最详细的Python打包成exe文件教程
2021/01/17 Python
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
艺人经纪人岗位职责
2014/04/15 职场文书
主题实践活动总结
2014/05/08 职场文书
小学校本培训方案
2014/06/06 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
消防演习通知
2015/04/25 职场文书
2015年测量员工作总结
2015/05/23 职场文书
致青春观后感
2015/06/09 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android