落伍首发 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 相关文章推荐
给多个地址发邮件的类
Oct 09 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
Dec 16 PHP
fleaphp rolesNameField bug解决方法
Apr 23 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
Jun 10 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
Jan 29 PHP
php实现利用phpexcel导出数据
Aug 24 PHP
php命令行使用方法和命令行参数说明
Apr 08 PHP
php输入数据统一类实例
Feb 23 PHP
CodeIgniter连贯操作的底层原理分析
May 17 PHP
php实现保存周期为1天的购物车类
Jul 07 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 PHP
php下的原生ajax请求用法实例分析
Feb 28 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加密函数 Javascript/Js 解密函数
2013/09/23 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
JavaScript this调用规则说明
2010/03/08 Javascript
javascript实现类似超链接的效果
2014/12/26 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
2016/04/03 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
[02:39]DOTA2英雄基础教程 极限穿梭编织者
2013/12/05 DOTA
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
浅析Python函数式编程
2018/10/06 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
django创建css文件夹的具体方法
2020/07/31 Python
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
瑜伽国际:Yoga International
2018/04/18 全球购物
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
CAD制图人员的自荐信
2014/02/07 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
信息工作经验交流材料
2014/05/28 职场文书
浅析MongoDB之安全认证
2021/06/26 MongoDB
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL
详解MySQL的主键查询为什么这么快
2022/04/03 MySQL
Python使用MapReduce进行简单的销售统计
2022/04/22 Python
Mysql数据库事务的脏读幻读及不可重复读详解
2022/05/30 MySQL