我沒(méi)看懂你具體想干什么。。。
公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出姑蘇免費(fèi)做網(wǎng)站回饋大家。
我做過(guò)省市縣分級(jí)聯(lián)動(dòng)下拉菜單,不知道是不是你想要的。。。
基本思想就是:在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ù)為Text,第二個(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效果:
完成后效果:
這樣試試呢,在數(shù)據(jù)模型中創(chuàng)建自定義字段(可參考iphpcms的教程)時(shí)字段類型設(shè)置為“聯(lián)動(dòng)菜單”,然后在“菜單id”選項(xiàng)處通過(guò)聯(lián)動(dòng)菜單列表選擇你的地區(qū)聯(lián)動(dòng)菜單,并可設(shè)定聯(lián)動(dòng)菜單的返回值的方式。然后在內(nèi)容添加編輯界面可出現(xiàn)此聯(lián)動(dòng)菜單項(xiàng),此方法常用。
二、在phpcms模板中直接調(diào)用聯(lián)動(dòng)菜單,此方法不常用。具體方法是來(lái)到后臺(tái)-擴(kuò)展-聯(lián)動(dòng)菜單列表,你會(huì)看到每一個(gè)聯(lián)動(dòng)菜單都有一個(gè)調(diào)用代碼,將此代碼復(fù)制粘貼到你想放的模板位置即可。但根據(jù)經(jīng)驗(yàn),這還不夠,因?yàn)殡m然通過(guò)此代碼把聯(lián)動(dòng)菜單掉出來(lái)了,但是因?yàn)槿狈Υ藥物@示時(shí)的css、js文件,往往顯示不正常,所以需要保證你的模板里同時(shí)引入了statics/js/dialog.js、statics/js/linkage/js/pop.js、statics/css/dialog.css等文件。需要對(duì)phpcms有一定了解。如果不行的話你可以直接去后盾人線下面授培訓(xùn)問(wèn)問(wèn)那些專家講師,他們很樂(lè)意幫你的,希望能幫到你,給個(gè)采納吧謝謝( ⌒?⌒)人(⌒?⌒ )v
方法1:onchange一次就提交一次表單,就可以傳值給php了
方法2:Ajax提交
大概js傳值給PHP就這兩種辦法了。
或者你可以考慮一次講所有數(shù)據(jù)用PHP寫成JS二維數(shù)組。當(dāng)然,如果數(shù)據(jù)量太大,這樣是不行的。
注意一下,你的異步傳輸?shù)捻?yè)面編碼問(wèn)題,如果返回的信息為亂碼,也會(huì)導(dǎo)致沒(méi)反映的現(xiàn)象。
建議中文內(nèi)容改成英文內(nèi)容進(jìn)行調(diào)試。
需要使用到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,首先寫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ū)的代碼
分享文章:php地區(qū)聯(lián)動(dòng)數(shù)據(jù) php省市區(qū)三級(jí)聯(lián)動(dòng)
瀏覽地址:http://chinadenli.net/article20/hgcjjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、網(wǎng)頁(yè)設(shè)計(jì)公司、企業(yè)建站、商城網(wǎng)站、靜態(tài)網(wǎng)站、ChatGPT
聲明:本網(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)