PHP地区三级联动是指通过PHP编程实现一个网页表单,用户可以选择省、市、区三级联动的下拉菜单。这种功能通常用于地址选择,确保用户选择的地址信息是完整且准确的。
以下是一个简单的PHP三级联动示例,使用静态数据实现:
<?php
// 数据库连接(示例)
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 获取省份
$provinces = $conn->query("SELECT id, name FROM provinces");
// 获取城市
if (isset($_POST['province'])) {
$city = $conn->query("SELECT id, name FROM cities WHERE province_id = " . $_POST['province']);
}
// 获取区县
if (isset($_POST['city'])) {
$district = $conn->query("SELECT id, name FROM districts WHERE city_id = " . $_POST['city']);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>三级联动</title>
</head>
<body>
<form method="post">
<label for="province">省份:</label>
<select name="province" id="province" onchange="loadCities()">
<option value="">请选择</option>
<?php while($row = $provinces->fetch_assoc()) { ?>
<option value="<?php echo $row['id']; ?>"><?php echo $row['name']; ?></option>
<?php } ?>
</select>
<label for="city">城市:</label>
<select name="city" id="city" onchange="loadDistricts()">
<option value="">请选择</option>
<?php if (isset($city)) { while($row = $city->fetch_assoc()) { ?>
<option value="<?php echo $row['id']; ?>"><?php echo $row['name']; ?></option>
<?php } } ?>
</select>
<label for="district">区县:</label>
<select name="district" id="district">
<option value="">请选择</option>
<?php if (isset($district)) { while($row = $district->fetch_assoc()) { ?>
<option value="<?php echo $row['id']; ?>"><?php echo $row['name']; ?></option>
<?php } } ?>
</select>
<input type="submit" value="提交">
</form>
<script>
function loadCities() {
var provinceId = document.getElementById('province').value;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
document.getElementById('city').innerHTML = xhr.responseText;
}
};
xhr.open('POST', 'get_cities.php', true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send('province=' + provinceId);
}
function loadDistricts() {
var cityId = document.getElementById('city').value;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
document.getElementById('district').innerHTML = xhr.responseText;
}
};
xhr.open('POST', 'get_districts.php', true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send('city=' + cityId);
}
</script>
</body>
</html>
通过以上方法,可以有效解决PHP地区三级联动中遇到的常见问题。
领取专属 10元无门槛券
手把手带您无忧上云