3 レベルのリンクを実装するための Ajax PHP メソッド: 最初にテスト データベースを作成し、3 つのテーブルを作成します。次に、すべての州を初期化します。次に、Ajax リクエストを通じて現在の州 ID をサーバー プログラムに渡します。最後に、クエリを実行するだけです。データベースを作成し、必要な処理や表示を行います。
推奨: 「PHP ビデオ チュートリアル 」
このケースにはデータベースとデータベース設計が含まれます次のように:
まず、次の内容を含む test データベースを作成します:
CREATE TABLE IF NOT EXISTS `province` ( `province_id` int(2) NOT NULL AUTO_INCREMENT, `province_name` varchar(20) NOT NULL, PRIMARY KEY (`province_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; INSERT INTO `province` (`province_id`, `province_name`) VALUES (1, '安徽'), (2, '浙江'); CREATE TABLE IF NOT EXISTS `city` ( `city_id` int(4) NOT NULL AUTO_INCREMENT, `city_name` varchar(20) NOT NULL, `province_id` int(4) NOT NULL, PRIMARY KEY (`city_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; INSERT INTO `city` (`city_id`, `city_name`, `province_id`) VALUES (1, '合肥', 1), (2, '安庆', 1), (3, '南京', 2), (4, '徐州', 2); CREATE TABLE IF NOT EXISTS `county` ( `county_id` int(4) NOT NULL AUTO_INCREMENT, `county_name` varchar(20) NOT NULL, `city_id` int(4) NOT NULL, PRIMARY KEY (`county_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; INSERT INTO `county` (`county_id`, `county_name`, `city_id`) VALUES (1, '怀宁', 2), (2, '望江', 2), (3, '肥东', 1), (4, '肥西', 1);
データベースの説明: 州、市、郡の 3 つのテーブルを作成し、いくつかのテスト データを挿入しました。もちろん、データベースの効率を設計することもできます。 table はテーブルほどではないので、使用はお勧めしません。個人の習慣によって異なります。
実装プロセスは難しくありません。アイデアは次のとおりです。
1) すべての州を初期化します。これは実行できます。データベースから直接、州をクエリします。
2) ユーザーが州を選択すると、イベントがトリガーされ、現在のプロヴィンスの id がトリガーされます。#ajax を通じてリクエストを発行し、サーバー プログラムに渡します
3) サーバー クライアントのリクエストに従って、データベースにクエリを実行し、特定の形式でクライアントに返します
## 4) クライアントはサーバーからデータを取得し、必要な処理を実行します。 処理が表示されます。 ##Create
select.php (コードは単純です。関数を実装するだけです。原理を説明するだけです。)
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2 <html> 3 <head> 4 <title>三级联动(作者:mckee - www.phpddt.com)</title> 5 <meta http-equiv="content-type"content="text/html; charset=UTF-8"/> 6 <script> 7 function createAjax(){ 8 var xmlHttp = false; 9 if (window.XMLHttpRequest){ 10 xmlHttp = new XMLHttpRequest(); 11 }else if(window.ActiveXObject){ 12 try{ 13 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 14 }catch(e){ 15 try{ 16 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 17 }catch(e){ 18 xmlHttp = false; 19 } 20 } 21 } 22 return xmlHttp; 23 } 24 25 var ajax = null; 26 function getCity(province_id){ 27 ajax = createAjax(); 28 ajax.onreadystatechange=function(){ 29 if(ajax.readyState == 4){ 30 if(ajax.status == 200){ 31 var cities = ajax.responseXML.getElementsByTagName("city"); 32 $('city').length = 0; 33 var myoption = document.createElement("option"); 34 myoption.value = ""; 35 myoption.innerText = "--请选择城市--"; 36 $('city').appendChild(myoption); 37 for(var i=0;i<cities.length;i++){ 38 var city_id = cities[i].childNodes[0].childNodes[0].nodeValue; 39 var city_name = cities[i].childNodes[1].childNodes[0].nodeValue; 40 var myoption = document.createElement("option"); 41 myoption.value = city_id; 42 myoption.innerText = city_name; 43 $('city').appendChild(myoption); 44 } 45 } 46 } 47 } 48 49 ajax.open("post","selectPro.php",true); 50 ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 51 ajax.send("province_id="+province_id); 52 53 } 54 55 function getCounty(city_id){ 56 ajax = createAjax(); 57 ajax.onreadystatechange=function(){ 58 if(ajax.readyState == 4){ 59 if(ajax.status == 200){ 60 61 var cities = ajax.responseXML.getElementsByTagName("county"); 62 $('county').length = 0; 63 var myoption = document.createElement("option"); 64 myoption.value = ""; 65 myoption.innerText = "--请选择县--"; 66 $('county').appendChild(myoption); 67 for(var i=0;i<cities.length;i++){ 68 var city_id = cities[i].childNodes[0].childNodes[0].nodeValue; 69 var city_name = cities[i].childNodes[1].childNodes[0].nodeValue; 70 var myoption = document.createElement("option"); 71 myoption.value = city_id; 72 myoption.innerText = city_name; 73 $('county').appendChild(myoption); 74 } 75 } 76 } 77 } 78 ajax.open("post","selectPro.php",true); 79 ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 80 ajax.send("city_id="+city_id); 81 } 82 83 function $(id){ 84 return document.getElementById(id); 85 } 86 87 </script> 88 </head> 89 <body> 90 <form name="location"> 91 <select name="province" onchange="getCity(this.value)"> 92 <option value="">-- 请选择省份--</option> 93 <?php 94 $conn = mysql_connect("localhost","root",""); 95 mysql_select_db("test"); 96 mysql_query("set names utf8"); 97 $sql = "select * from province"; 98 $result = mysql_query( $sql ); 99 while($res = mysql_fetch_assoc($result)){ 100 ?> 101 <option value="<?php echo $res['province_id']; ?>"><?php echo $res['province_name']?></option> 102 <?php 103 } 104 ?> 105 </select> 106 107 <select name="city" id="city" onChange="getCounty(this.value)"> 108 <option value="">--请选择城市--</option> 109 </select> 110 111 <select name="county" id="county"> 112 <option value="">--请选择县--</option> 113 </select> 114 </form> 115 </body> 116 </html>
selectPro.phpPage:
117 <?php 118 //禁止缓存(www.phpddt.com原创) 119 header("Content-type:text/xml; charset=utf-8"); 120 header("Cache-Control:no-cache"); 121 //数据库连接 122 $conn = mysql_connect("localhost","root",""); 123 mysql_select_db("test"); 124 mysql_query("set names utf8"); 125 126 if(!empty($_POST['province_id'])){ 127 128 $province_id = $_POST['province_id']; 129 $sql = "select * from city where province_id = {$province_id}"; 130 $query = mysql_query($sql); 131 $info = "<province>"; 132 while($res = mysql_fetch_assoc($query)){ 133 $info .= "<city>"; 134 $info .= "<city_id>".$res['city_id']."</city_id>"; 135 $info .= "<city_name>".$res['city_name']."</city_name>"; 136 $info .= "</city>"; 137 } 138 $info .= "</province>"; 139 echo $info; 140 } 141 142 if(!empty($_POST['city_id'])){ 143 144 $city_id = $_POST['city_id']; 145 $sql = "select * from county where city_id = {$city_id}"; 146 $query = mysql_query($sql); 147 $info = "<city>"; 148 while($res = mysql_fetch_assoc($query)){ 149 $info .= "<county>"; 150 $info .= "<county_id>".$res['county_id']."</county_id>"; 151 $info .= "<county_name>".$res['county_name']."</county_name>"; 152 $info .= "</county>"; 153 } 154 $info .= "</city>"; 155 echo $info; 156 } 157 ?>
以上がAjax PHPで3レベルのリンケージを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。