用php做省份的三級聯動 附帶數據庫


 

可以把它做成小插件的形式,以后需要,可以隨時調

來看一下怎么來做

先來寫個div然后,再引入js包

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文檔</title>
<script src="jquery-1.11.2.min.js"></script>
<script src="sanji.js"></script>
</head>

<body>
    <div id="sanji">
        
    </div>
</body>
</html>

引入的js文件,取名為sanji.js  

然后來看看js文件是怎么寫的

$(document).ready(function(e) {
    
    //向DIV里面扔三個下拉
    var str = "<select id='sheng'></select><select id='shi'></select><select id='qu'></select>";
    $("#sanji").html(str);
    
    FillSheng();
    FillShi();
    FillQu();
//選中項變化    
    $("#sheng").change(function(){                
            FillShi();
            FillQu();
        })
    $("#shi").change(function(){
            FillQu();
        })
});

//填充省的方法
function FillSheng()
{
    var pcode = "0001";       //父級代號
    $.ajax({
            async:false,
            url:"chuli.php",
            data:{pcode:pcode},
            type:"POST",
            dataType:"TEXT",
            success: function(data){              //回調函數
                    var hang = data.split("|");    //根據行與行的分隔符來拆
                    var str = "";
                    for(var i=0;i<hang.length;i++)
                    {
                        var lie = hang[i].split("^");          //列與列的分隔符來拆
                        str += "<option value='"+lie[0]+"'>"+lie[1]+"</option>";    //中間顯示地區名稱
                    }
                    $("#sheng").html(str);        //把顯示的地區名稱填充進去
                }
        });
}
//填充市的方法
function FillShi()
{
    var pcode = $("#sheng").val();
    $.ajax({
            async:false,
            url:"chuli.php",
            data:{pcode:pcode},
            type:"POST",
            dataType:"TEXT",
            success: function(data){
                    var hang = data.split("|");
                    var str = "";
                    for(var i=0;i<hang.length;i++)
                    {
                        var lie = hang[i].split("^");
                        str += "<option value='"+lie[0]+"'>"+lie[1]+"</option>";
                    }
                    $("#shi").html(str);
                }
        });
}
//填充區的方法
function FillQu()
{
    var pcode = $("#shi").val();
    $.ajax({
            url:"chuli.php",
            data:{pcode:pcode},
            type:"POST",
            dataType:"TEXT",
            success: function(data){
                    var hang = data.split("|");
                    var str = "";
                    for(var i=0;i<hang.length;i++)
                    {
                        var lie = hang[i].split("^");
                        str += "<option value='"+lie[0]+"'>"+lie[1]+"</option>";
                    }
                    $("#qu").html(str);
                }
        });
}

只要寫出一個來,其他兩個和上面一個原理是一樣的

再來看處理頁面,三項用一個處理頁面

看一下處理頁面的代碼

<?php
include("DBDA.class.php");
$db = new DBDA();

$pcode = $_POST["pcode"];

$sql = "select * from chinastates where parentareacode='{$pcode}'";

echo $db->StrQuery($sql);

數據庫的地區表是chinastates

根據傳過來的父級代號來查所有數據

最后運行起來的效果是這樣的

來看一下數據庫的內容

數據庫內容很多,三級聯動里的地區名稱都在里面,采用的是代號副代號的方式

比如說北京吧,北京的代號是11,它下面的北京市副代號就11, 北京市的主代號是1101,北京市下面的地區副代號就是1101,調地區的時候可以根據主代號查詢和它相同的副代號,就能查詢出來


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM