PHP三级联动通常指的是在Web应用中,通过PHP实现三个层级(例如:省、市、区)的联动选择。用户在选择上一级选项时,下一级的选项会动态更新,以提供更精确的选择。
以下是一个简单的PHP三级联动示例,假设我们有省、市、区的数据存储在数据库中。
CREATE TABLE `provinces` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `cities` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`province_id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`province_id`) REFERENCES `provinces`(`id`)
);
CREATE TABLE `districts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`city_id` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`city_id`) REFERENCES `cities`(`id`)
);
<?php
// 连接数据库
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database_name";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 获取省份
$provinces = [];
$result = $conn->query("SELECT id, name FROM provinces");
while ($row = $result->fetch_assoc()) {
$provinces[$row['id']] = $row['name'];
}
// 获取城市
if (isset($_GET['province_id'])) {
$cities = [];
$result = $conn->query("SELECT id, name FROM cities WHERE province_id = " . $_GET['province_id']);
while ($row = $result->fetch_assoc()) {
$cities[$row['id']] = $row['name'];
}
}
// 获取区
if (isset($_GET['city_id'])) {
$districts = [];
$result = $conn->query("SELECT id, name FROM districts WHERE city_id = " . $_GET['city_id']);
while ($row = $result->fetch_assoc()) {
$districts[] = $row['name'];
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>三级联动</title>
</head>
<body>
<select name="province" onchange="loadCities(this.value)">
<option value="">请选择省份</option>
<?php foreach ($provinces as $id => $name): ?>
<option value="<?php echo $id; ?>"><?php echo $name; ?></option>
<?php endforeach; ?>
</select>
<select name="city" id="city" onchange="loadDistricts(this.value)">
<option value="">请选择城市</option>
<?php if (isset($cities)): ?>
<?php foreach ($cities as $id => $name): ?>
<option value="<?php echo $id; ?>"><?php echo $name; ?></option>
<?php endforeach; ?>
<?php endif; ?>
</select>
<select name="district">
<option value="">请选择区</option>
<?php if (isset($districts)): ?>
<?php foreach ($districts as $name): ?>
<option value="<?php echo $name; ?>"><?php echo $name; ?></option>
<?php endforeach; ?>
<?php endif; ?>
</select>
<script>
function loadCities(provinceId) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
document.getElementById('city').innerHTML = xhr.responseText;
}
};
xhr.open('GET', 'your_php_script.php?province_id=' + provinceId, true);
xhr.send();
}
function loadDistricts(cityId) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
document.getElementsByName('district')[0].innerHTML = xhr.responseText;
}
};
xhr.open('GET', 'your_php_script.php?city_id=' + cityId, true);
xhr.send();
}
</script>
</body>
</html>
希望以上信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云