在PHP中增加地区三级分类通常涉及到数据库设计、数据操作和前端展示。三级分类意味着每个地区可以分为省、市、区三个层级。
CREATE TABLE provinces (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
CREATE TABLE cities (
id INT AUTO_INCREMENT PRIMARY KEY,
province_id INT,
name VARCHAR(50) NOT NULL,
FOREIGN KEY (province_id) REFERENCES provinces(id)
);
CREATE TABLE districts (
id INT AUTO_INCREMENT PRIMARY KEY,
city_id INT,
name VARCHAR(50) NOT NULL,
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);
}
// 插入省
$province_name = "广东省";
$sql = "INSERT INTO provinces (name) VALUES ('$province_name')";
$conn->query($sql);
// 获取刚插入的省的ID
$province_id = $conn->insert_id;
// 插入市
$city_name = "深圳市";
$sql = "INSERT INTO cities (province_id, name) VALUES ($province_id, '$city_name')";
$conn->query($sql);
// 获取刚插入的市的ID
$city_id = $conn->insert_id;
// 插入区
$district_name = "南山区";
$sql = "INSERT INTO districts (city_id, name) VALUES ($city_id, '$district_name')";
$conn->query($sql);
$conn->close();
?>
<!DOCTYPE html>
<html>
<head>
<title>地区三级分类</title>
</head>
<body>
<select id="province">
<option value="">请选择省</option>
</select>
<select id="city" disabled>
<option value="">请选择市</option>
</select>
<select id="district" disabled>
<option value="">请选择区</option>
</select>
<script>
async function loadProvinces() {
const response = await fetch('get_provinces.php');
const provinces = await response.json();
const provinceSelect = document.getElementById('province');
provinces.forEach(province => {
const option = document.createElement('option');
option.value = province.id;
option.textContent = province.name;
provinceSelect.appendChild(option);
});
}
provinceSelect.addEventListener('change', async (event) => {
const provinceId = event.target.value;
const response = await fetch(`get_cities.php?province_id=${provinceId}`);
const cities = await response.json();
const citySelect = document.getElementById('city');
citySelect.innerHTML = '<option value="">请选择市</option>';
citySelect.disabled = false;
cities.forEach(city => {
const option = document.createElement('option');
option.value = city.id;
option.textContent = city.name;
citySelect.appendChild(option);
});
});
citySelect.addEventListener('change', async (event) => {
const cityId = event.target.value;
const response = await fetch(`get_districts.php?city_id=${cityId}`);
const districts = await response.json();
const districtSelect = document.getElementById('district');
districtSelect.innerHTML = '<option value="">请选择区</option>';
districtSelect.disabled = false;
districts.forEach(district => {
const option = document.createElement('option');
option.value = district.id;
option.textContent = district.name;
districtSelect.appendChild(option);
});
});
loadProvinces();
</script>
</body>
</html>
mysqli_error()
函数检查SQL语句的执行错误。通过以上步骤和示例代码,你可以实现PHP中的地区三级分类功能。
领取专属 10元无门槛券
手把手带您无忧上云