1. 程式人生 > >php省市聯動實現

php省市聯動實現

泥鰍 ack values primary ray insert ble else node

設計模式:ajax實現,數據庫格式:id,name,parent_id

數據庫:

CREATE TABLE IF NOT EXISTS `city` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) DEFAULT NULL,
  `parent_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=26 ;


INSERT INTO `city` (`id`, `name`, `parent_id`) VALUES
(1, 安徽, 0), (2, 浙江, 0), (3, 亳州, 1), (4, 合肥, 1), (5, 巢湖, 1), (6, 渦陽, 3), (7, 蒙城, 3), (8, 利辛, 3), (9, 譙城, 3), (10, 杭州, 2), (11, 寧波, 2), (12, 溫州, 2), (13, 義烏, 2), (14, 嘉興, 2), (15, 巢湖, 4), (16, 阜陽, 1), (17, 界首, 16), (18, 泥鰍, 16), (19, 拱墅區, 10), (20, 江幹區, 10), (21, 臨湖鎮
, 6), (22, 立德鎮, 5), (23, 標裏鎮, 6), (24, 花溝鎮, 6), (25, 義門鎮, 6);

HTML代碼:

<html>
<head>
<meta http-equiv="content-type" content="text/html" charset="utf-8">
<style type="text/css">
h2{
    text-align:center;
    color:red;
}
.div{
    width:500px;
    height:300px;
    border
:1px solid gray; margin:auto; text-align:center; padding-top:30px; } .div select{ width:80px; height:25px; color:green; } </style> </head> <script type="text/javascript"> function deal(value,next){ var Next=document.getElementById(next); //刪除節點 var oP=Next.getElementsByTagName("option"); for(var i=oP.length-1;i>=1;i--){ oP[i].parentNode.removeChild(oP[i]); } //創建ajax引擎 var xmlhttp=""; if(window.XMLHttpRequest){ xmlhttp=new XMLHttpRequest(); }else{ xmlhttp=new ActiveXObject("Microsoft.XMLHttp"); } //判斷狀態是否滿足條件 xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==4&&xmlhttp.status==200){ var val=xmlhttp.responseText; // alert(val); var object=eval("("+val+")"); for(var k in object){ //創建節點 var oPt=document.createElement("option"); //添加屬性和值 oPt.setAttribute(value,object[k][name]); Next.appendChild(oPt); oPt.innerHTML=object[k][name]; } } } var url="deal.php"; var data="name="+value; //打開 xmlhttp.open("post",url,true); xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//必須加上 //發送數據 xmlhttp.send(data); } window.onload=function(){ deal(null,"sheng"); } </script> <body> <h2>省市聯動AJAX實現</h2> <div class="div"> <form action="Act.php" method="post"> <!-- 省級標簽 --> <select name="sheng" id="sheng" onchange="deal(this.value,‘shi‘)"> <option></option> </select> <!-- 市級標簽 --> <select name="shi" id="shi" onchange="deal(this.value,‘xian‘)"> <option></option> </select> <!-- 縣級標簽 --> <select name="xian" id="xian" onchange="deal(this.value,‘zhen‘)"> <option></option> </select> <!-- 鎮級標簽 --> <select name="zhen" id="zhen"> <option></option> </select> <input type="submit" value="提交"/> </form> </div> </body> </html>

php後臺處理:

<?php 
header("content-type:text/html;charset=utf-8");

$name=$_POST[‘name‘];

//連接數據庫
$conn=mysqli_connect("localhost","root","");
if(!$conn){
    die("連接數據庫失敗");
}

//設置字符集
mysqli_query($conn, "set names utf8");

//選擇數據庫
mysqli_select_db($conn, "city");

$sql="select id from city where name="."‘$name‘;";

$res=mysqli_query($conn, $sql);
if(mysqli_num_rows($res)>0){
    $row=mysqli_fetch_assoc($res);
    $id=$row[‘id‘]; 
}else{
    $id=0;
}

$sql="select * from city where parent_id=".$id;

$res=mysqli_query($conn, $sql);
$arr=array();
if(mysqli_num_rows($res)>0){
    while($row=mysqli_fetch_assoc($res)){
        $arr[]=$row;
    }
}

foreach ($arr as $k=>$v){
    
    @$str.=‘{"name":‘.‘"‘.$v[‘name‘].‘","parent_id":‘.‘"‘.$v[‘parent_id‘].‘","id":‘.‘"‘.$v[‘id‘].‘"},‘;
    
}

echo "[".$str."]";


// echo ‘[{"name":"安徽","parent_id":"0"},{"name":"浙江","parent_id":"0"},{"name":"吉林","parent_id":"0"},]‘;



?>

實現效果:

技術分享

php省市聯動實現