绝对原创
测试地址: http://www.mlmm.cn/mypage/?name=ceshi
测试页代码:
<BR> <BR><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <BR><title>php+ajax动态生成下拉菜单</title> <BR><script language="JavaScript" src="../include/js/regions.js"></script> <BR> <BR><body> <BR> <BR><tr><td>{$regionss(中华人民共和国)}</td></tr> <BR> <BR> <BR><BR>
regionss 函数代码:
QUOTE:
//省市地3级联动下拉菜单函数 regionss 省.市.地 <BR>function regionss($country="中华人民共和国") <BR>{ <BR> global $db; $i = 1; <BR> $text="省/市/自治区\n"; <br><br> $result = $db->query("SELECT province FROM ".TABLE_PROVINCE." WHERE country='$country' ORDER BY provinceid"); <BR> while($r = $db->fetch_array($result)) <BR> { <BR> $text .= "".$r['province']." "; <BR> $i++; <BR> } <BR> $text.=""; <BR> $text.=" 市/县/区\n"; <BR> $text.="县级市/县\n"; <BR> return $text; <br><br>}
regions.js 的代码:
//var ab = new Array(); <BR>var xmlHttp; <BR>var xmlHttpa; <BR>function createXMLHttpRequest() { <BR> if (window.ActiveXObject) { <BR> xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); <BR> } <BR> else if (window.XMLHttpRequest) { <BR> xmlHttp = new XMLHttpRequest(); <BR> } <BR>} <BR>function createXMLHttpRequesta() { <BR> if (window.ActiveXObject) { <BR> xmlHttpa = new ActiveXObject("Microsoft.XMLHTTP"); <BR> } <BR> else if (window.XMLHttpRequest) { <BR> xmlHttpa = new XMLHttpRequest(); <BR> } <BR>} <br><br>function startRequest() { <BR> createXMLHttpRequest(); <BR> createXMLHttpRequesta(); <BR> xmlHttp.onreadystatechange = handleStateChange; <BR> xmlHttpa.onreadystatechange = handleStateChangearea; <BR> document.getElementById('select2').options.length = 0; <BR> document.getElementById('select3').options.length = 0; <BR> var url = document.form1.select1.value; <BR> var qurl = "/regions.php?province="+url+"&time="+new Date().getTime(); <BR> xmlHttp.open("GET", qurl, true); <BR> xmlHttp.send(null); <BR> //setTimeout("startRequest()",2000); <BR>} <br><br>function handleStateChange() { <BR> if(xmlHttp.readyState == 4) { <BR> if(xmlHttp.status == 200) { <BR> var obj = document.getElementById('select2'); //将服务器返回的字符串写到页面中ID为select2的区域 <BR> obja = document.getElementById('select3'); //将服务器返回的字符串写到页面中ID为select3的区域 <BR> eval(xmlHttp.responseText); <br><br> } <BR> } <BR>} <BR>function handleStateChangearea() { <BR> eval(xmlHttpa.responseText); <BR>} <BR>//var ab = new Array(); <br><br>function startRequesta() { <BR> createXMLHttpRequesta(); <BR> xmlHttpa.onreadystatechange = handleStateChangea; <BR> document.getElementById('select3').options.length = 0; <BR> var url = document.form1.select2.value; <BR> var qurl = "/regions.php?city="+url+"&time="+new Date().getTime(); <BR> xmlHttpa.open("GET", qurl, true); <BR> xmlHttpa.send(null); <BR> //setTimeout("startRequest()",2000); <BR>} <br><br>function handleStateChangea() { <BR> if(xmlHttpa.readyState == 4) { <BR> if(xmlHttpa.status == 200) { <BR> var obja = document.<p>4本文¥来源gao!%daima.com搞$代*!码$网9</p><pre>搞代gaodaima码
getElementById(‘select3’);
eval(xmlHttpa.responseText);
//将服务器返回的字符串写到页面中ID为select3的区域
}
}
}
数据岛 regions.php 页面代码
<?php <BR>require "common.php"; <BR>$city = $city ? $city : ""; <BR>$area = $area ? $area : ""; <BR>if($province && $city==''){ <BR> global $db; $i = 1; <br><br> $result = $db->query("SELECT DISTINCT city FROM ".TABLE_CITY." WHERE province='$province' ORDER BY cityid"); <BR> while($r = $db->fetch_array($result)) <BR> { <BR> $r[city]=iconv('gb2312','UTF-8',$r[city]); <BR>echo "obj.options[obj.options.length] = new Option('".$r[city]."','".$r[city]."');\n"; <BR>$i++; <BR> } <BR> $resultarea = $db->query("SELECT DISTINCT city FROM ".TABLE_CITY." WHERE province='$province' ORDER BY cityid"); <BR> $r = $db->fetch_array($resultarea); <BR> $city = $r[city]; <BR> $resulta = $db->query("SELECT DISTINCT area FROM ".TABLE_CITY." WHERE city='$city' ORDER BY cityid"); <BR> while($ra = $db->fetch_array($resulta)) <BR> { <BR> $ra[area]=iconv('gb2312','UTF-8',$ra[area]); <BR>echo "obja.options[obja.options.length] = new Option('".$ra[area]."','".$ra[area]."');\n"; <BR>$i++; <BR> } <br><br><BR>} <BR>if($city && $province==''){ <BR> global $db; $i = 1; <br><br> $result = $db->query("SELECT DISTINCT area FROM ".TABLE_CITY." WHERE city='$city' ORDER BY cityid"); <BR> while($r = $db->fetch_array($result)) <BR> { <BR> $r[area]=iconv('gb2312','UTF-8',$r[area]); <BR>echo "obja.options[obja.options.length] = new Option('".$r[area]."','".$r[area]."');\n"; <BR>$i++; <BR> } <BR>} <BR>?>
地址信息数据库:
采用的是phpcms3.0里自带的数据库,我没有进行任何改动
本程序可以在phpcms3.0里直接使用,若在其他地方使用请自己修改