jQuery+PHP+MySQL實現二級聯動下拉菜單

二級聯動下拉菜單選擇應用在在很多地方,比如說省市下拉聯動,商品大小類下拉選擇聯動。本文將通過實例講解使用jQuery+PHP+MySQL來實現大小分類二級下拉聯動效果。

先看下效果

 

實現的效果就是當選擇大類時,小類下拉框裏的選項內容也隨着改變。實現原理:根據大類的值,通過jQuery把值傳給後臺PHP處理,PHP通過查詢MySQl數據庫,得到相應的小類,並返回JSON數據給前端處理。

XHTML

首先我們要建立兩個下拉選擇框,第一個是大類,第二個是小類。大類的值可以是預先寫好,也可以是從數據庫讀取。

 
<label>大類:</label> 
<select name="bigname" id="bigname"> 
   <option value="1">前端技術</option> 
   <option value="2">程序開發</option> 
   <option value="3">數據庫</option> 
</select> 
<label>小類:</label> 
<select name="smallname" id="smallname"> 
</select> 

jQuery

先寫一個函數,獲取大類選擇框的值,並通過$.getJSON方法傳遞給後臺server.php,讀取後臺返回的JSON數據,並通過$.each方法遍歷JSON數據,將對應的值寫入一個option字符串,最後將option追加到小類裏。

 
function getSelectVal(){ 
    $.getJSON("server.php",{bigname:$("#bigname").val()},function(json){ 
        var smallname = $("#smallname"); 
        $("option",smallname).remove(); //清空原有的選項 
        $.each(json,function(index,array){ 
            var option = "<option value='"+array['id']+"'>"+array['title']+"</option>"
            smallname.append(option); 
        }); 
    }); 
} 

注意,在遍歷JSON數據追加之前一定要先將小類裏的原有的項清空。清空選項的方法有兩種,一種是上文代碼中提到,還有一種更簡單直接的方法:

 
smallname.empty(); 

然後,在頁面載入後執行調用函數:

 
$(function(){ 
    getSelectVal(); 
    $("#bigname").change(function(){ 
        getSelectVal(); 
    }); 
}); 

在頁面初始的時候,下拉框是要設置選項的,所以在初始的時候就要調用getSelectVal(),而當大類選項改變時,也調用了getSelectVal()。

PHP

 
include_once("connect.php"); //鏈接數據庫 
 
$bigid = $_GET["bigname"]; 
if(isset($bigid)){ 
    $q=mysql_query("select * from catalog where cid = $bigid"); 
    while($row=mysql_fetch_array($q)){ 
        $select[] = array("id"=>$row[id],"title"=>$row[title]); 
    } 
    echo json_encode($select); 

根據jQuery傳遞過來的大類的value值,構造SQL語句查詢分類表,最終輸出JSON數據。本站在未做特別說明的情況下所使用的PHP與MySQL連接,和查詢語句等均使用原始語句方法如mysql_query等,目的就是爲了讓讀者能夠直觀的知曉數據的傳輸查詢。

最後附上MYSQL表結構:

 
CREATE TABLE `catalog` ( 
  `id` mediumint(6) NOT NULL auto_increment, 
  `cid` mediumint(6) NOT NULL default '0'
  `title` varchar(50) NOT NULL
  PRIMARY KEY  (`id`) 
) ENGINE=MyISAM  DEFAULT CHARSET=utf8; 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章