PHP+MYSQL+AJAX 3级联动下拉菜单

<!--

by:moskey.tong

date:09-11-25

感谢CSDN中PHP版面的dzxccsu大哥!帮我写的代码!AJAX不熟悉!在此谢谢!

-->

getcity.php页面:

<?
require_once '../common.inc.php';//这边是我MYSQL数据的配置页面
$result=$_SG['db']->fetch_all("select * from area_district where parent_id=0");//这边是我MYSQL数据库的类(看不懂的写下面的注释里面的)

/*就是这样写的

*$conn=mysql_connect("localhost","root","");
*mysql_select_db("tt");
*mysql_query('Set names utf8');
*$sql="select * from area_district where parent_id='0'";
*$result=mysql_query($sql);

*/
foreach ($result as $key=>$val)
{
 $str.=$val['area_name'].','.$val['area_id'].'|';
}
echo $str;
exit();

$str=substr($str,0,strlen($str)-1);
$result_str=explode('|',$str);

foreach($result_str as $key=>$val)
{
 list($area_name,$area_code)=explode(',',$val);
    echo "<br>";
 echo $area_name;
 echo "<br>";

}
?>

==========================================================================================

getdiqu.php页面:

<?
require_once '../common.inc.php';//同理
$city=substr($_GET['city'],0,2);

$arry=array('31','11','12');//这边是选中MYSQL数据库中直辖市的parent_id 中的前2个字符,为了后面判断是否是直辖市
if(in_array($city,$arry)==true)//如果是直辖市
{
 $i=$city."__00";
 $sql="select area_name ,area_id from area_district where area_id like '$i' or parent_id like '$i'";
}
else//如果不是
{
 $i=$city."__00";
 $sql="select area_name ,area_id from area_district where area_id like '$i' and parent_id like '$i'";
}

$result=$_SG['db']->fetch_all($sql);//同理
foreach($result as $key=>$val){
  $str.=$val['area_name'].','.$val['area_id'].'|';
}
echo $str;
?>

========================================================================================

zxs.php页面:

<?
require_once '../common.inc.php';//同理
$diqu=substr($_GET['diqu'],0,4);
$arry=array('31','11','12');
if(in_array(substr($diqu,0,2),$arry)==true)
{
    $sql="";
}
else
{
    $sql="select area_name ,area_id from area_district where parent_id like '$diqu%' and area_id like '$diqu%' ";
}

$result=$_SG['db']->fetch_all($sql);//同理
foreach($result as $key=>$val){
  $str.=$val['area_name'].','.$val['area_id'].'|';
}
echo $str;

?>

===========================================================================================

主页面:

<html>
<script>
function createRequest(){
    var request;
    if(window.XMLHttpRequest){
        request = new XMLHttpRequest();
    } else if(window.ActiveXObject){
        request = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return request;
}

/*
function createRequest(){
    var request;
    if(window.XMLHttpRequest){ // For Mozilla, Safari, ...
        request = new XMLHttpRequest();
    } else if(window.ActiveXObject){ // For Internet Explorer
        request = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return request;
}
*/
function getCity(){
    var ajax=createRequest();
    var url = "getCity.php";
    ajax.open("GET",url,true);
    ajax.onreadystatechange = function () {
        if (ajax.readyState == 4 && ajax.status==200) {
                updatePageCity(ajax.responseText);
        }
    }
    ajax.send(null);
}
function updatePageCity(str){
  alert(str);//看弹出来的信息
   var str1 = new Array();
    if(str!=""){
        str1 =str.split("|");
        document.getElementById("city").options[0]=new Option("-请选择城市-", " ");
        for(var i=0;i<str1.length-1;i++){
 document.getElementById("city").options[i+1]=new Option(str1[i],str1[i]);
    }
}
}

//获取地区
function getDiqu(){
    var ajax=createRequest();
    var city=document.getElementById("city").value;
    var url = "getDiqu.php?city="+city;
    ajax.open("GET",url,true);
    ajax.onreadystatechange = function () {
        if (ajax.readyState == 4 && ajax.status==200) {
                updateDiqu(ajax.responseText);
        }
    }
    ajax.send(null);
}
function updateDiqu(str){
 alert(str);
   var str1 = new Array();
     if(str!=""){
        str1 =str.split("|");
        for(var i=0;i<str1.length-1;i++){
 document.getElementById("diqu").options[i]=new Option(str1[i],str1[i]);
    }
}
}

//获取ZXS
function getzxs(){
    var ajax=createRequest();
    var diqu=document.getElementById("diqu").value;
    var url = "mgr/getzxs.php?diqu="+diqu;
    ajax.open("GET",url,true);
    ajax.onreadystatechange = function () {
        if (ajax.readyState == 4 && ajax.status==200) {
                updatezxs(ajax.responseText);
        }
    }
    ajax.send(null);
}
function updatezxs(str){
   var str1 = new Array();
     if(str!=""){
        str1 =str.split("|");
        for(var i=0;i<str1.length-1;i++){
  str2=str1[i].split(",");
        document.getElementById("zxs").options[i]=new Option(str2[0],str2[1]);
  
    }
}
}

</script>

<body οnlοad="getCity()">
<select name="city" id="city" οnchange="getDiqu()"></select>
<select name="diqu" id="diqu"οnchange="getzxs()"  ></select>
<select name="zxs" id="zxs"  ></select>

</body>
</html>

基本上是这样:我说说一下原理:getcity.PHP 页面打印出每个省!然后ajax.open("GET",url,true);
传值给页面 ,然后updatePageCity(str)这个函数截取内容在变成数组!在传给每个Option也就是下拉菜单.
然后你悬择下拉菜单的值 触发getDiqu()方法 然后选取你选择的值附加在url上 传给getDiqu.php这个页面。这个页面在GET出值 也就是这个($city=$_GET['city'];),然后在查询
通过  ajax.onreadystatechange = function () {
        if (ajax.readyState == 4 && ajax.status==200) {
                updatexxx(ajax.responseText);
        }

这个方法把值从XX.PHP页面查询出来的值交给AJAX处理!
然后在updateDiqu(str)函数变成数组 传给每个Option也就是下拉菜单。下面的ZXS.PHP页面就多说了。和上面一样!

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值