代碼下載:http://ishare.iask.sina.com.cn/f/33878000.htmljavascript
CREATE TABLE IF NOT EXISTS `category` ( `cate_id` int(11) NOT NULL AUTO_INCREMENT, `parent_id` int(11) NOT NULL DEFAULT '0', `name` varchar(128) NOT NULL, PRIMARY KEY (`cate_id`), UNIQUE KEY `cate_id` (`cate_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=25 ;
說明:cate_id 用於存放當期地區分類的id,parent_id用於存放父類id,name爲地區分類的名字php
<?php $host = 'localhost'; $database = 'area'; $login = 'root'; $pass = ''; $dbconnect = mysql_connect($host, $login, $pass); if (!$dbconnect) { die("數據庫連接出錯!"); } mysql_query("set names utf8", $dbconnect); mysql_select_db($database, $dbconnect); ?>
<?php include "database_connect.php"; // 包含數據庫連接操做文件 $cate_id = isset($_POST['cate_id']) ? (int)$_POST['cate_id'] : -1; // 得到提交參數cate_id $sql = "SELECT `cate_id`, `parent_id`, `name` FROM category WHERE `parent_id` = {$cate_id};"; // 把參數cate_id做爲父類id查找其子類全部地區分類 $result = mysql_query($sql, $dbconnect); while($row = mysql_fetch_array($result)) { $categories[] = $row; // 把結果放如一維數組中 } if (!empty($categories)) { echo json_encode($categories); // 把結果以json加密,以json對象返回結果 } else { return false; } ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Multi Area Select</title> <script type="text/javascript" charset="utf-8" src="js/jquery-1.7.min.js"></script> </head> <body> <?php /** * database connect */ include "database_connect.php"; /** * 查找頂級地址分類(parent_id = 0) */ $sql = "SELECT `cate_id`, `parent_id`, `name` FROM category WHERE `parent_id` = 0;"; $result = mysql_query($sql, $dbconnect); while($row = mysql_fetch_array($result)) { $categories[] = $row; } ?> <!-- 此處必須加上onchange事件和事件函數ajaxGetArea(),以便當選擇時觸發 --> <select onchange="ajaxGetArea(this)" name="cate_id" id="area"> <?php foreach ($categories as $cate): ?> <option value="<?php echo $cate['cate_id']?>"><?php echo $cate['name'];?></option> <?php endforeach;?> </select> <script type="text/javascript"> jQuery(function($) { ajaxGetArea($("#area")); // 先執行一次,以便顯示全部地區信息 }); /** * 動態加載地區信息 * @params obj */ function ajaxGetArea(obj) { /** * 請求地址 */ var link = "getArea.php"; /** * 請求數據 */ $.post( link, { /** * 參數 */ cate_id : $(obj).val() }, function(data) { /** * 清除子類的select */ $(obj).nextAll("select").each(function() { $(this).remove(); }); if (data) { /** * 構造子類select的html */ var select = null; select = "<select name=\"cate_id\" onchange=\"ajaxGetArea(this)\">"; // 此處注意添加onchange事件 $.each(data, function(key, item) { select += "<option value="+item.cate_id+">"+item.name+"</option>"; }); select += "</select>"; /** * 插入到右側 */ $(obj).after(select); /** * 觸發下一個子類select的動態加載 */ $(obj).next('select').trigger('change', function() { ajaxGetArea($(this)); // 此處實現遞歸 }); /** * 更新name的位置 */ $(obj).removeAttr('name'); $(obj).next('select').attr('name', 'cate_id'); } }, 'json' ); } </script> </body> </html>