php后台+layui如何实现layui table的CheckBox多选的数据保存到数据库?
需要详细的代码。
//layui toolbar按钮:
<button id="add" class="layui-btn layui-btn-sm layui-btn-warm" lay-event="add">批量操作</button>
//div弹窗内容
<!-- 添加淡出层开始-->
<div style="display: none;" id="addDiv">
<form class="layui-form" action="" lay-filter="dataForm" id="dataForm" method="POST">
<br>
<div class="layui-form-item">
<div class="layui-block">
<label class="layui-form-label">编号:</label>
<div class="layui-input-inline">
<input type="text" name="id" id="id" autocomplete="off" readonly style="background:#F3F3F3" class="layui-input" >
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">设备编号:</label>
<div class="layui-input-inline">
<input type="text" name="toolid" id="toolid" autocomplete="off" readonly style="background:#F3F3F3" class="layui-input" >
</div>
<label class="layui-form-label">设备名称:</label>
<div class="layui-input-inline">
<input type="text" name="name" id="name" autocomplete="off" readonly style="background:#F3F3F3" class="layui-input" >
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">负责人:</label>
<div class="layui-input-inline">
<input type="text" id="owner" name="owner" autocomplete="off" lay-verify="required" class="layui-input" value="<?php echo $_SESSION['realname']?>" >
</div>
<label class="layui-form-label">区域:</label>
<div class="layui-input-inline">
<input type="text" id="area" name="area" autocomplete="off" required lay-verify="required" class="layui-input" >
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block" align="center">
<button type="button" class="layui-btn layui-btn-normal layui-btn-sm layui-icon layui-icon-search" lay-filter="doSubmit" lay-submit>提交 </button>
<button type="reset" class="layui-btn layui-btn-primary layui-btn-sm layui-icon layui-icon-refresh">重置</button>
</div>
</div>
</form>
</div>
<!-- 添加的淡出层结束 -->
//点击按钮后:
<script>
$('#add').on('click',function(){
layui.use(['table', 'layer'], function() {
var table = layui.table,
layer = layui.layer;
var checkStatus = table.checkStatus('test')
console.log(checkStatus)
// 判断是否选中数据
if (checkStatus.data.length === 0) {
layer.msg('请选择数据', { //没选中CheckBox则提示请选择数据
icon: 2
})
} else {
**否则弹窗图2的状态的div,如何写?**保存的url:url = './data.php?action=add'
}
})
})
</script>
php后台如何修改?做到批量提交,且在提交的时候对数据库已有数据做判断(如果设备编号toolid在table中已存在且status为other,则number字段+1,),如下是单个案例提交数据库的写法,且不具备计数的效果。
elseif (isset($_GET['action']) && $_GET['action'] == 'add') {
// 因为太多了,所以举个例
$clean = array();
$clean['id'] = isset($_POST['id']) ? $_POST['id'] : '';
$clean['toolid'] = isset($_POST['toolid']) ? $_POST['toolid'] : '';
$clean['name'] = isset($_POST['name']) ? $_POST['name'] : '';
$clean['owner'] = isset($_POST['owner']) ? $_POST['owner'] : '';
$clean['area'] = isset($_POST['area']) ? $_POST['area'] : '';
$insert = $pdo1->exec("INSERT INTO table(id,toolid,name,owner,area)
VALUES(
'{$clean['id']}',
'{$clean['toolid']}',
'{$clean['name']}',
'{$clean['owner']}',
'{$clean['area']}'
)
");
if($insert >0 ){
echo json_encode(array(
"code" => 1,
"msg" => "success",
"count" => $insert,
"data" => array()
));
}else{
echo json_encode(array(
"code" => 1,
"msg" => "error",
"count" => 0,
"data" => array()
));
}
未选中checkbox时点击批量操作按钮提示先选中,在CheckBox多选后,弹窗输入值然后批量保存到数据库。
layui table(test1) checkbox样式:
在CheckBox多选后批量操作点击或弹出窗口 (add)ID,设备编号,设备名称为上述layui‘table CheckBox选中的3项默认未灰色,负责人和区域为手动录入’
使用这个来获取已经点击之后 的星星的value值 之后把这个值传到数据库就行了。
var dd = $("#pingf span").html();
var numArr = dd.match(/\d/);
var pingfen = numArr[0];console.log(pingfen);
提交数据
```javascript
saveData() {
this.$refs.forms.validate((valid) => {
if (valid) {
let _arr=JSON.parse(JSON.stringify(arr1));//拷贝arr1,避免后面_arr格式转换为字符串时arr1的格式改变 ,使验证失败
this.$set(this.performance,'arr',_arr.toString());//_arr转换为字符串,并赋值给arr
this.$http
.post("url",this.performance)
.then((res) => {
if (res.status == 200) {
this.$message.success("创建成功");
history.back("-1");
} else {
this.$message.error("创建失败");
}
})
.catch((err) => {
this.$message.error(err);
});
}
});
},