落伍首发 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中的cookie
Nov 26 PHP
实现 win2003 下 mysql 数据库每天自动备份
Dec 06 PHP
php 大数据量及海量数据处理算法总结
May 07 PHP
PHP计数器的实现代码
Jun 08 PHP
php curl选项列表(超详细)
Jul 01 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
基于PHP后台的Android新闻浏览客户端
May 23 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
php 从一个数组中随机的取出若干个不同的数实例
Dec 31 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 PHP
php实现数组重复数字统计实例
Sep 30 PHP
Laravel关系模型指定条件查询方法
Oct 10 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的explode和implode的使用说明
2011/07/17 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
2014/11/04 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
2015/12/14 PHP
PHP截取发动短信内容的方法
2017/07/04 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
2016/06/06 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
jQuery纵向导航菜单效果实现方法
2016/12/19 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
Vue2.0组件间数据传递示例
2017/03/07 Javascript
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Python基于pygame实现的弹力球效果(附源码)
2015/11/11 Python
python模拟事件触发机制详解
2018/01/19 Python
对numpy中数组元素的统一赋值实例
2018/04/04 Python
如何Tkinter模块编写Python图形界面
2020/10/14 Python
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
DELPHI面试题研发笔试试卷
2015/11/08 面试题
幼儿园托班开学寄语
2014/01/18 职场文书
师范生自荐信模板
2014/05/28 职场文书
趣味运动会广播稿
2014/09/13 职场文书
一篇文章带你搞懂Python类的相关知识
2021/05/20 Python