已往在做Select多重關聯選單,大半是透過儲存於 Javascript 的陣列,來達到
我們所想要的關聯選單效果,但那限制於我們事先輸入關聯選單裡面的值,當
選單裡的值是需要每次去判斷讀取資料庫,來達成關聯選單效果,這情況就變
的很麻煩,在此就必需依靠 jQuery.cascade ,達成此效果。
【jQuery cascade】官網 : 範例
官網的範例有詳細的執行效果,但範例並非是示範讀取資料庫,僅是讀
取某資料檔的陣列,所以我們需將改為讀取資料庫的資料。
我是參考台扣啵的文章再去做修改:[Ajax]jQuery的多重下拉選單應用
jQuery.cascade的路徑:
﹂ _WWW_
﹂ include
﹂ javascript
﹂ jQuery
﹂ jquery-1.2.6.min.js
﹂ jquery.cascade.ext.js
﹂ jquery.cascade.js
﹂ jquery.templating.js
1•下載 jQuery.cascade後,將我們所需檔案放置資料夾,為上面路徑
所包含的四個檔。
2•需兩個網頁檔案為:test.php(主要呈現頁面) 及 action.php(讀取資
料庫處理頁面)。
〔test.php〕
1•將所需jQuery程式包含進來,至於<head></head>裡。
<script type="text/javascript"
src="include/javascript/jQuery/jquery-1.2.6.min.js"></script>
<script type="text/javascript"
src="include/javascript/jQuery/jquery.cascade.js"></script>
<script type="text/javascript"
src="include/javascript/jQuery/jquery.cascade.ext.js"></script>
<script type="text/javascript"
src="include/javascript/jQuery/jquery.templating.js"></script>
2•網頁所需欄位,底下僅只二級關聯選單,將底下程式至於<body>
</boby>裡。
第一項<select id="myParentSelect">
<option value="">請選擇</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
<option value="E">E</option>
</select>
第二項<select id="myFirstChildSelect">
<option value="">請選擇</option>
</select>
<script type="text/javascript">
$(function () {
// 第一階層對應第二階層
$(\'#myFirstChildSelect\').cascade(\'#myParentSelect\', {
ajax: {
//所需的後端處理頁面
url:\'action.php\',
//傳值至後端頁面
data:{ val: $(\'#myParentSelect\').val() }
},
template: function(item) { return "<option value=\'" +
item.Value + "\'>" + item.Text + "</option>"; },
match: function(selectedValue) { return this.When
== selectedValue; }
});
});
</script>
〔action.php〕
1•SQL部份我是使用 MDB2 連線,前端所傳遞過來的值需已GET取的
,需特別注意$list部份大小寫及 \' 符號,容易出問題。
<?php
require_once(\'include/SQLstore.php\');
if (isset($_GET[\'val\'])) {
$parentId = $_GET[\'val\'];
}
$sql = "SELECT id, name FROM table
WHERE value=\'$parentId\'";
$result =& $mdb2 -> query($sql);
if (PEAR::isError($result))
die(\'查詢發生錯誤:\'.$result -> getMessage());
$predata = $result -> fetchAll();
if (PEAR::isError($predata))
die(\'存取資料失敗:\'.$predata -> getMessage());
$list = \'[\';
foreach ( $predata as $row_predata ) {
//原始碼 {\'When\':\'A\',\'Value\':\'A2\',\'Text\':\'A2\'},
$list .= \'{\\\'When\\\':\\\'\'.$parentId.\'\\\',\\\'Value\\\':\\\'
\'.$row_predata[0].\' \\\',\\\'Text\\\':\\\' \'.$row_predata[1].\' \\\'},\';
}
$list .= \']\';
echo $list;
?>
|