方法1:onchange一次就提交一次表單,就可以傳值給php了
創(chuàng)新互聯(lián)技術(shù)團(tuán)隊(duì)十年來致力于為客戶提供做網(wǎng)站、網(wǎng)站制作、成都品牌網(wǎng)站建設(shè)、成都全網(wǎng)營(yíng)銷推廣、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過多年發(fā)展,公司擁有經(jīng)驗(yàn)豐富的技術(shù)團(tuán)隊(duì),先后服務(wù)、推廣了數(shù)千家網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。
方法2:Ajax提交
大概js傳值給PHP就這兩種辦法了。
或者你可以考慮一次講所有數(shù)據(jù)用PHP寫成JS二維數(shù)組。當(dāng)然,如果數(shù)據(jù)量太大,這樣是不行的。
給第一個(gè)select加js事件,點(diǎn)擊它的時(shí)候動(dòng)態(tài)加載第二個(gè)select的內(nèi)容,比如寫個(gè)ajax獲取第一個(gè)select的value(這個(gè)value是哪個(gè)quanx_id),然后去后臺(tái)請(qǐng)求,后無論是用緩存還是說直接從數(shù)據(jù)庫(kù)中查,得到這個(gè)value對(duì)應(yīng)的field,再返回?cái)?shù)據(jù)到前臺(tái)進(jìn)行處理。也可以在頁(yè)面加載的時(shí)候就直接吧每個(gè)quanx_id的對(duì)應(yīng)關(guān)系全部查找并在模板中的js用相應(yīng)變量存儲(chǔ)后,再采用上面的思路去動(dòng)態(tài)加載就是了。反正最終都是當(dāng)select1的value發(fā)生變化,動(dòng)態(tài)加載select2的value.
比如你有一個(gè)城市表
city,有字段id和city_name,
代碼如下:
?php
$sql
=
'select
*
from
city';
$res
=
mysql_query($sql);
$cities
=
array();
while
($row
=
mysql_fetch_assoc($res)
)
{
$cities[$row['id']]
=
$row['name'];
}
?
--
請(qǐng)選擇城市
--
?php
foreach
(
$cities
as
$id=
$city
)
{
?
?php
echo
$city;
?
原理就是從mysql查詢出所有城市的數(shù)據(jù)并弄成一個(gè)數(shù)組$cities
,然后循環(huán)$cities,按照下拉表單的格式輸出option選項(xiàng)就好了
1。如果數(shù)據(jù)量很大需要用ajax,就是在每次change時(shí)發(fā)送請(qǐng)求道服務(wù)器,返回?cái)?shù)據(jù)
這種方法網(wǎng)上有很多,搜三級(jí)聯(lián)動(dòng)菜單就可以
2.如果數(shù)據(jù)量不大,可以一次讀到放到靜態(tài)html文件里邊用js實(shí)現(xiàn)
例子:簡(jiǎn)單的方法,描述如下
讀取數(shù)據(jù)庫(kù)students :字段studentid ,studentname,studentgroup
select name="type_sel" id="type_sel" onchange="document.getElementById('test_t').innerHTML=this.begin;"
option value="學(xué)生id1" begin='學(xué)生姓名1'學(xué)生1/option
option value="學(xué)生id2" begin='學(xué)生姓名2'學(xué)生2/option
/select
div id='test_t'/div