DedeCMS(织梦内容管理系统)是一款基于PHP+MySQL开发的开源网站管理系统。地区联动是指在一个表单中,用户选择了一个地区的上级区域后,下级区域会自动更新显示可选的下级区域,从而实现多级联动选择的效果。三级地区联动即包含省、市、区/县三级联动。
地区联动通常分为静态和动态两种类型:
地区联动广泛应用于各种需要选择地区的表单中,如:
以下是一个简单的DedeCMS三级地区联动的实现示例:
假设我们有一个名为area
的表,结构如下:
CREATE TABLE `area` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(11) DEFAULT NULL,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
);
<!DOCTYPE html>
<html>
<head>
<title>三级地区联动</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<select id="province" onchange="loadCities(this.value)">
<option value="">请选择省份</option>
</select>
<select id="city" onchange="loadDistricts(this.value)">
<option value="">请选择城市</option>
</select>
<select id="district">
<option value="">请选择区县</option>
</select>
<script>
function loadProvinces() {
$.ajax({
url: 'get_areas.php',
type: 'GET',
data: { parent_id: 0 },
success: function(data) {
var options = '<option value="">请选择省份</option>';
$.each(data, function(index, item) {
options += '<option value="' + item.id + '">' + item.name + '</option>';
});
$('#province').html(options);
}
});
}
function loadCities(provinceId) {
$.ajax({
url: 'get_areas.php',
type: 'GET',
data: { parent_id: provinceId },
success: function(data) {
var options = '<option value="">请选择城市</option>';
$.each(data, function(index, item) {
options += '<option value="' + item.id + '">' + item.name + '</option>';
});
$('#city').html(options);
$('#district').html('<option value="">请选择区县</option>');
}
});
}
function loadDistricts(cityId) {
$.ajax({
url: 'get_areas.php',
type: 'GET',
data: { parent_id: cityId },
success: function(data) {
var options = '<option value="">请选择区县</option>';
$..each(data, function(index, item) {
options += '<option value="' + item.id + '">' + item.name + '</option>';
});
$('#district').html(options);
}
});
}
$(document).ready(function() {
loadProvinces();
});
</script>
</body>
</html>
<?php
include_once 'config.php'; // 包含数据库连接配置
$parent_id = isset($_GET['parent_id']) ? intval($_GET['parent_id']) : 0;
$sql = "SELECT id, name FROM area WHERE parent_id = :parent_id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':parent_id', $parent_id, PDO::PARAM_INT);
$stmt->execute();
$areas = $stmt->fetchAll(PDO::FETCH_ASSOC);
header('Content-Type: application/json');
echo json_encode($areas);
?>
通过以上方法,你可以实现一个基本的DedeCMS三级地区联动功能,并解决常见的相关问题。
领取专属 10元无门槛券
手把手带您无忧上云