落伍首发 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数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
Oct 30 PHP
PHP中iconv函数知识汇总
Jul 02 PHP
学习php设计模式 php实现装饰器模式(decorator)
Dec 07 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
Symfony的安装和配置方法
Mar 17 PHP
Thinkphp框架中D方法与M方法的区别
Dec 23 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 PHP
php服务器的系统详解
Oct 12 PHP
php操作redis命令及代码实例大全
Nov 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
调频问题解答
2021/03/01 无线电
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
php中ob_flush函数和flush函数用法分析
2015/03/18 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
2015/08/23 PHP
php时间函数用法分析
2016/05/28 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
js函数调用的方式
2014/05/06 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
深入理解react-router@4.0 使用和源码解析
2017/05/23 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
Python中logging实例讲解
2019/01/17 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
Pytorch to(device)用法
2020/01/08 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
django model object序列化实例
2020/03/13 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
酒店拾金不昧表扬信
2014/01/18 职场文书
2015年幼儿园毕业感言
2014/02/12 职场文书
班级德育工作实施方案
2014/02/21 职场文书
服装设计专业毕业生求职信
2014/04/09 职场文书
网络研修心得体会
2016/01/08 职场文书