php layui多级联动
时间: 2023-08-03 21:07:31 浏览: 99
PHP和LayUI结合实现多级联动可以通过AJAX异步请求实现。以下是一个简单的示例,实现三级联动:省份、城市和区县。
1. 页面布局
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>省市区联动</title>
<link rel="stylesheet" href="//cdn.staticfile.org/layui/2.5.6/css/layui.min.css">
</head>
<body>
<div class="layui-container">
<div class="layui-row">
<div class="layui-col-md4">
<div class="layui-form-item">
<label class="layui-form-label">省份</label>
<div class="layui-input-block">
<select name="province" lay-filter="province">
<option value="">请选择省份</option>
</select>
</div>
</div>
</div>
<div class="layui-col-md4">
<div class="layui-form-item">
<label class="layui-form-label">城市</label>
<div class="layui-input-block">
<select name="city" lay-filter="city">
<option value="">请选择城市</option>
</select>
</div>
</div>
</div>
<div class="layui-col-md4">
<div class="layui-form-item">
<label class="layui-form-label">区县</label>
<div class="layui-input-block">
<select name="district" lay-filter="district">
<option value="">请选择区县</option>
</select>
</div>
</div>
</div>
</div>
</div>
<script src="//cdn.staticfile.org/jquery/3.5.1/jquery.min.js"></script>
<script src="//cdn.staticfile.org/layui/2.5.6/layui.min.js"></script>
<script>
layui.use(['form'], function(){
var form = layui.form;
// 加载省份数据
$.ajax({
url: 'data.php?type=province',
dataType: 'json',
success: function(data){
if(data.code == 0){
var html = '<option value="">请选择省份</option>';
$.each(data.data, function(index, item){
html += '<option value="'+item.id+'">'+item.name+'</option>';
});
$('select[name=province]').html(html);
form.render('select');
}
}
});
// 省份改变事件
form.on('select(province)', function(data){
var provinceId = data.value;
if(provinceId){
// 加载城市数据
$.ajax({
url: 'data.php?type=city',
data: {province_id: provinceId},
dataType: 'json',
success: function(data){
if(data.code == 0){
var html = '<option value="">请选择城市</option>';
$.each(data.data, function(index, item){
html += '<option value="'+item.id+'">'+item.name+'</option>';
});
$('select[name=city]').html(html);
$('select[name=district]').html('<option value="">请选择区县</option>');
form.render('select');
}
}
});
}else{
$('select[name=city]').html('<option value="">请选择城市</option>');
$('select[name=district]').html('<option value="">请选择区县</option>');
form.render('select');
}
});
// 城市改变事件
form.on('select(city)', function(data){
var cityId = data.value;
if(cityId){
// 加载区县数据
$.ajax({
url: 'data.php?type=district',
data: {city_id: cityId},
dataType: 'json',
success: function(data){
if(data.code == 0){
var html = '<option value="">请选择区县</option>';
$.each(data.data, function(index, item){
html += '<option value="'+item.id+'">'+item.name+'</option>';
});
$('select[name=district]').html(html);
form.render('select');
}
}
});
}else{
$('select[name=district]').html('<option value="">请选择区县</option>');
form.render('select');
}
});
});
</script>
</body>
</html>
```
2. 数据获取和处理
```php
<?php
// 数据库配置
$db_host = 'localhost';
$db_port = '3306';
$db_user = 'root';
$db_password = '123456';
$db_name = 'test';
// 连接数据库
$conn = mysqli_connect($db_host, $db_user, $db_password, $db_name, $db_port);
if(!$conn){
die('连接数据库失败:' . mysqli_connect_error());
}
// 设置编码
mysqli_set_charset($conn, 'utf8mb4');
// 获取请求类型
$type = $_GET['type'];
// 查询省份数据
if($type == 'province'){
$sql = "SELECT * FROM `province`";
$result = mysqli_query($conn, $sql);
if(mysqli_num_rows($result) > 0){
$data = array();
while($row = mysqli_fetch_assoc($result)){
$data[] = array(
'id' => $row['id'],
'name' => $row['name']
);
}
echo json_encode(array('code' => 0, 'data' => $data));
}else{
echo json_encode(array('code' => 1, 'msg' => '查询数据失败'));
}
}
// 查询城市数据
elseif($type == 'city'){
$provinceId = $_GET['province_id'];
$sql = "SELECT * FROM `city` WHERE `province_id`={$provinceId}";
$result = mysqli_query($conn, $sql);
if(mysqli_num_rows($result) > 0){
$data = array();
while($row = mysqli_fetch_assoc($result)){
$data[] = array(
'id' => $row['id'],
'name' => $row['name']
);
}
echo json_encode(array('code' => 0, 'data' => $data));
}else{
echo json_encode(array('code' => 1, 'msg' => '查询数据失败'));
}
}
// 查询区县数据
elseif($type == 'district'){
$cityId = $_GET['city_id'];
$sql = "SELECT * FROM `district` WHERE `city_id`={$cityId}";
$result = mysqli_query($conn, $sql);
if(mysqli_num_rows($result) > 0){
$data = array();
while($row = mysqli_fetch_assoc($result)){
$data[] = array(
'id' => $row['id'],
'name' => $row['name']
);
}
echo json_encode(array('code' => 0, 'data' => $data));
}else{
echo json_encode(array('code' => 1, 'msg' => '查询数据失败'));
}
}
// 关闭数据库连接
mysqli_close($conn);
```
在这个例子中,我们使用了LayUI的表单组件和jQuery库来简化页面开发。通过AJAX异步请求获取省份、城市和区县数据,并在页面上动态生成下拉框选项。您可以将这个例子作为起点,根据您的具体需求进行修改和扩展。
阅读全文