require?'city.php';
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),寧化企業(yè)網(wǎng)站建設(shè),寧化品牌網(wǎng)站建設(shè),網(wǎng)站定制,寧化網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,寧化網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
//?連接數(shù)據(jù)庫(kù)(PDO)
$pdo=new?PDO('mysql:host=localhost;dbname=city','root','root');
$pdo-exec('set?names?utf8');
$pdo-setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
//?實(shí)例化城市類
$c=new?city();
$result=$c-mycity();
$city_id?=?0;
foreach?($result?as?$k=$value)?{
if(count($value)?==?count($value,1)){
$sql="insert?into?city_province?(province)?value?('{$value['province_name']}')";
$smt=$pdo-prepare($sql);
$smt-execute();
}else{
$sql11="insert?into?city_province?(province)?value?('{$value['province_name']}')";
$smt11=$pdo-prepare($sql11);
$smt11-execute();
foreach?($value['city']?as?$v=$value1)?{
$sql2="insert?into?city_name?(name,province_id)?values?('{$value1['city_name']}','{$k}')";
$smt2=$pdo-prepare($sql2);
$smt2-execute();
$city_id?+=?1;
echo?$city_id.'br';
if(!empty($value1['area'])){
foreach?($value1['area']?as?$valu1e2)?{
$sql3="insert?into?city_area?(area,city_id)?values?('{$valu1e2}','{$city_id}')";
$smt3=$pdo-prepare($sql3);
$smt3-execute();
}
}
}
}
}
城市類太大了,發(fā)不了。
我是把省、市、地區(qū)分別存在三個(gè)數(shù)據(jù)表中(我是新手,剛自己寫(xiě)的)
?php return array (
1 =
array (
'province_name' = '北京市',
'city' =
array (
1 =
array (
'city_name' = '市轄區(qū)',
'area' =
array (
1 = '東城區(qū)',
2 = '西城區(qū)',
3 = '崇文區(qū)',
4 = '宣武區(qū)',
5 = '朝陽(yáng)區(qū)',
6 = '豐臺(tái)區(qū)',
7 = '石景山區(qū)',
8 = '海淀區(qū)',
9 = '門(mén)頭溝區(qū)',
10 = '房山區(qū)',
11 = '通州區(qū)',
12 = '順義區(qū)',
13 = '昌平區(qū)',
14 = '大興區(qū)',
15 = '懷柔區(qū)',
16 = '平谷區(qū)',
),
),
2 =
array (
'city_name' = '北京周邊',
'area' =
array (
1 = '密云縣',
2 = '延慶縣',
),
),
),
),
2 =
array (
'province_name' = '天津市',
'city' =
array (
1 =
array (
'city_name' = '市轄區(qū)',
'area' =
array (
1 = '和平區(qū)',
2 = '河?xùn)|區(qū)',
3 = '河西區(qū)',
4 = '南開(kāi)區(qū)',
5 = '河北區(qū)',
6 = '紅橋區(qū)',
7 = '塘沽區(qū)',
8 = '漢沽區(qū)',
9 = '大港區(qū)',
10 = '東麗區(qū)',
11 = '西青區(qū)',
12 = '津南區(qū)',
13 = '北辰區(qū)',
14 = '武清區(qū)',
15 = '寶坻區(qū)',
),
),
2 =
array (
'city_name' = '天津周邊',
'area' =
array (
1 = '寧河縣',
2 = '靜??h',
3 = '薊 縣',
),
),
),
),
3 =
array (
'province_name' = '河北省',
'city' =
array (
1 =
array (
'city_name' = '石家莊市',
'area' =
array (
1 = '長(zhǎng)安區(qū)',
2 = '橋東區(qū)',
3 = '橋西區(qū)',
4 = '新華區(qū)',
5 = '井陘礦區(qū)',
6 = '裕華區(qū)',
7 = '井陘縣',
8 = '正定縣',
9 = '欒城縣',
10 = '行唐縣',
11 = '靈壽縣',
12 = '高邑縣',
13 = '深澤縣',
14 = '贊皇縣',
15 = '無(wú)極縣',
16 = '平山縣',
17 = '元氏縣',
18 = '趙 縣',
19 = '辛集市',
20 = '藁城市',
21 = '晉州市',
22 = '新樂(lè)市',
23 = '鹿泉市',
),
),
2 =
array (
'city_name' = '唐山市',
'area' =
array (
1 = '路南區(qū)',
2 = '路北區(qū)',
3 = '古冶區(qū)',
4 = '開(kāi)平區(qū)',
5 = '豐南區(qū)',
6 = '豐潤(rùn)區(qū)',
7 = '灤 縣',
8 = '灤南縣',
9 = '樂(lè)亭縣',
10 = '遷西縣',
11 = '玉田縣',
12 = '唐??h',
13 = '遵化市',
14 = '遷安市',
),
),
3 =
array (
'city_name' = '秦皇島市',
'area' =
array (
1 = '海港區(qū)',
2 = '山海關(guān)區(qū)',
3 = '北戴河區(qū)',
4 = '青龍滿族自治縣',
5 = '昌黎縣',
6 = '撫寧縣',
7 = '盧龍縣',
),
),
4 =
array (
'city_name' = '邯鄲市',
'area' =
array (
1 = '邯山區(qū)',
2 = '叢臺(tái)區(qū)',
3 = '復(fù)興區(qū)',
4 = '峰峰礦區(qū)',
5 = '邯鄲縣',
6 = '臨漳縣',
7 = '成安縣',
8 = '大名縣',
9 = '涉 縣',
10 = '磁 縣',
11 = '肥鄉(xiāng)縣',
12 = '永年縣',
13 = '邱 縣',
14 = '雞澤縣',
15 = '廣平縣',
16 = '館陶縣',
17 = '魏 縣',
18 = '曲周縣',
19 = '武安市',
),
),
5 =
array (
'city_name' = '邢臺(tái)市',
'area' =
array (
1 = '橋東區(qū)',
2 = '橋西區(qū)',
3 = '邢臺(tái)縣',
4 = '臨城縣',
基本思想就是:在JS動(dòng)態(tài)創(chuàng)建select控件的option,通過(guò)Ajax獲取在PHP從SQL數(shù)據(jù)庫(kù)獲取的省市區(qū)信息,代碼有點(diǎn)長(zhǎng),但很多都是類似的,例如JS中省、市、區(qū)獲取方法類似,PHP中通過(guò)參數(shù)不同執(zhí)行不同的select語(yǔ)句。
index.html代碼:
!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"
""
html?xmlns=""
head
title省市區(qū)三級(jí)聯(lián)動(dòng)/title
META?http-equiv=Content-Type?content="text/html;?charset=gb2312"
script?src="scripts/thumbnails.js"?type="text/javascript"/script
/head
thumbnails.js代碼:
window.onload?=?getProvince;
function?createRequest()?{//Ajax于PHP交互需要對(duì)象
try?{
request?=?new?XMLHttpRequest();//創(chuàng)建一個(gè)新的請(qǐng)求對(duì)象;
}?catch?(tryMS)?{
try?{
request?=?new?ActiveXObject("Msxml2.XMLHTTP");
}?catch?(otherMS)?{
try?{
request?=?new?ActiveXObject("Microsoft.XMLHTTP");
}?catch?(failed)?{
request?=?null;
}
}
}
return?request;
}
function?sech(id)?{//省市改變時(shí)觸發(fā),select的onchange事件
var?aa?=?document.getElementById(id);
if(id=="sheng"){
getCity(aa.value);//這里aa.value為省的id
}
if(id=="shi")
{
getCounty(aa.value);//這里aa.value為市的id
}
}
function?getProvince()?{//獲取所有省
request?=?createRequest();
if?(request?==?null)?{
alert("Unable?to?create?request");
return;
}
var?url=?"getDetails.php?ID=0";//ID=0時(shí)傳遞至PHP時(shí)讓其獲取所有省
request.open("GET",?url,?true);
request.onreadystatechange?=?displayProvince;?//設(shè)置回調(diào)函數(shù)
request.send(null);????//發(fā)送請(qǐng)求
}
function?getCity(id){//獲取省對(duì)應(yīng)的市
request?=?createRequest();
if?(request?==?null)?{
alert("Unable?to?create?request");
return;
}
var?url=?"getDetails.php?ID="?+?escape(id);
request.open("GET",?url,?true);
request.onreadystatechange?=?displayCity;
request.send(null);
}
function?getCounty(id){//獲取市對(duì)應(yīng)的區(qū)
request?=?createRequest();
if?(request?==?null)?{
alert("Unable?to?create?request");
return;
}
var?url=?"getDetails.php?ID="?+?escape(id);
request.open("GET",?url,?true);
request.onreadystatechange?=?displayCounty;
request.send(null);
}
function?displayProvince()?{//將獲取的數(shù)據(jù)動(dòng)態(tài)增加至select
if?(request.readyState?==?4)?{
if?(request.status?==?200)?{
var?a=new?Array;
var?b=request.responseText;//將PHP返回的數(shù)據(jù)賦值給b
a=b.split(",");//通過(guò)","將這一數(shù)據(jù)保存在數(shù)組a中
document.getElementById("sheng").length=1;
var?obj=document.getElementById("sheng');??
for(i=0;i
obj.options.add(new?Option(a[i],i+1));?//動(dòng)態(tài)生成OPTION加到select中,第一個(gè)參數(shù)為T(mén)ext,第二個(gè)參數(shù)為Value值.
}
}
}
function?displayCity()?{//將獲取的數(shù)據(jù)動(dòng)態(tài)增加至select
if?(request.readyState?==?4)?{
if?(request.status?==?200)?{
var?a=new?Array;
var?b=request.responseText;
a=b.split(",");
document.getElementById("shi").length=1;//重新選擇
document.getElementById("xian").length=1;//重新選擇
if(document.getElementById("sheng").value!="province"){
var?obj=document.getElementById('shi');??
for(i=0;i
obj.options.add(new?Option(a[i],?document.getElementById("sheng").value*100+i+1));?//ocument.getElementById("sheng").value*100+i+1對(duì)應(yīng)的是市的ID。
}
}
}
}
function?displayCounty()?{//將獲取的數(shù)據(jù)增加至select
if?(request.readyState?==?4)?{
if?(request.status?==?200)?{
var?a=new?Array;
var?b=request.responseText;
a=b.split(",");
document.getElementById("xian").length=1;
if(document.getElementById("sheng").value!="province"document.getElementById("shi").value!="city"){
var?obj=document.getElementById('xian');??
for(i=0;i
obj.options.add(new?Option(a[i],i+1001));?
}
}
}
}
getDetails.php代碼:
?php
header("Content-Type:?text/html;?charset=gb2312");
$conn?=?new?COM("ADODB.Connection")?or?die("Cannot?start?ADO");
$connstr?=?"Provider=SQLOLEDB;Persist?Security?Info=False;User?ID=root;Password=123456;Initial?Catalog=area;Data?Source=localhost";
if($_REQUEST['ID']==0){//獲得省列表
$conn-Open($connstr);?//建立數(shù)據(jù)庫(kù)連接
$sqlstr?=?"select?name?from?Province";?//設(shè)置查詢字符串
$rs?=?$conn-Execute($sqlstr);?//執(zhí)行查詢獲得結(jié)果
$num_cols?=?$rs-Fields-Count();?//得到數(shù)據(jù)集列數(shù)
$Province=array();
$i=0;
while?(!$rs-EOF)?{
$Province[$i]=$rs-Fields['name']-Value.",";
$rs-MoveNext();
$i++;
}
foreach($Province?as?$val)
echo?$val;
$conn-Close();
$rs?=?null;
$conn?=?null;
}
if($_REQUEST['ID']0$_REQUEST['ID']35){//獲得省對(duì)應(yīng)的市列表
$conn-Open($connstr);?//建立數(shù)據(jù)庫(kù)連接
$sqlstr?=?"select?name?from?City?where?cid=".$_REQUEST['ID'];?//設(shè)置查詢字符串
$rs?=?$conn-Execute($sqlstr);?//執(zhí)行查詢獲得結(jié)果
$num_cols?=?$rs-Fields-Count();?//得到數(shù)據(jù)集列數(shù)
$City=array();
$i=0;
while?(!$rs-EOF)?{
$City[$i]=$rs-Fields['name']-Value.",";
$rs-MoveNext();
$i++;
}
foreach($City?as?$val)
echo?$val;
$conn-Close();
$rs?=?null;
$conn?=?null;
}
if($_REQUEST['ID']100){//獲得省市對(duì)應(yīng)的縣列表
$conn-Open($connstr);?//建立數(shù)據(jù)庫(kù)連接
$sqlstr?=?"select?name?from?County?where?cid=".$_REQUEST['ID'];?//設(shè)置查詢字符串
$rs?=?$conn-Execute($sqlstr);?//執(zhí)行查詢獲得結(jié)果
$num_cols?=?$rs-Fields-Count();?//得到數(shù)據(jù)集列數(shù)
$County=array();
$i=0;
while?(!$rs-EOF)?{
$County[$i]=$rs-Fields['name']-Value.",";
$rs-MoveNext();
$i++;
}
foreach($County?as?$val)
echo?$val;
$conn-Close();
$rs?=?null;
$conn?=?null;
}
?
數(shù)據(jù)庫(kù)設(shè)計(jì),表格Province表,City表,County表。
要求:Province表需要id和name,id建議從1至34,例如北京id為1,廣東id為2,以此類推;
? ?City表需要id,name和cid,id為cid*100+1,cid為該市的上級(jí),例如深圳的上級(jí)為廣東省,cid為2的話,深圳的id就是201,以此類推。
? ?County表需要id,name和cid,因?yàn)槭侨?jí)的關(guān)系,id可以隨意,建議從10001開(kāi)始自增。cid為所在上級(jí),例如寶安區(qū)的cid為201,龍崗區(qū)的cid也為201;
截圖:
HTML效果:
完成后效果:
有3種方法:
1、手工一行一行的寫(xiě)成php代碼
2、使用程序分析圖一的數(shù)據(jù),寫(xiě)入到數(shù)據(jù)庫(kù)里,然后動(dòng)態(tài)查詢
3、使用程序分析圖一的數(shù)據(jù),寫(xiě)入到數(shù)據(jù)庫(kù)里,動(dòng)態(tài)生成圖二的代碼
需要使用到ajax。到網(wǎng)上查下,一堆。代碼是固定的。
數(shù)據(jù)庫(kù)設(shè)置
id,area,areaname
1 210000 遼寧省
2 210100 沈陽(yáng)市
3 210104 大東區(qū)
select name='area1' id='area1' onchange="get_area2(this.value);"
這里讀取省的數(shù)據(jù)
$sql="select area,areaname from area where right(area,4)='0000'";
/select
select name='area2' id='area2 'onchange="get_area(this.value);"
這里根據(jù)ajax讀取數(shù)據(jù),開(kāi)始的時(shí)候是空的
/select
select name='area' id='area'
這里根據(jù)ajax讀取數(shù)據(jù),開(kāi)始的時(shí)候是空的
/select
方法:
1,首先寫(xiě)get_area2 的js 代碼,這里就用到ajax讀取,這里獲取的數(shù)據(jù)是區(qū)域代碼的前兩位代碼(比如:21)
這個(gè)在根據(jù)這個(gè)21的參數(shù),讀取表中相關(guān)的市,
$sql="select area,areaname from area where left(area,2)='21' and right(area,2)='00'";
這個(gè)語(yǔ)句讀取出來(lái)21的市代碼
2,同一讀取出來(lái)區(qū)的代碼
當(dāng)前題目:php省市縣地區(qū)數(shù)據(jù) php 省市縣
URL分享:http://jinyejixie.com/article0/doscioo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、企業(yè)網(wǎng)站制作、網(wǎng)站制作、商城網(wǎng)站、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)