如何在双列表界面中实现已关联用户的自动勾选功能
发布时间 - 2026-01-31 00:00:00 点击率:次本文介绍如何通过php将两个数据库查询结果(已分配用户与可选用户)同步展示,并在右侧可选用户列表中自动勾选左侧已关联的用户,提升任务责任人管理界面的交互准确性与开发效率。
要在右侧“可添加用户”列表中精准标记出已在左侧“当前责任人”中出现的用户(即自动勾选对应复选框),关键在于跨查询状态共享:先遍历并缓存左侧已关联用户的 ID,再在右侧循环中实时比对并动态添加 checked 属性。
✅ 实现步骤详解
第一步:收集已分配用户 ID 列表
在第一个 while 循环中,不直接输出,而是将每个匹配用户的 userid 存入一个索引数组(如 $assignedUserIds)。注意:务必在执行第二个查询前完成该数组构建。第二步:在右侧循环中判断并渲染 checked 状态
遍历所有可选用户时,使用 in_array($row['userid'], $assignedUserIds) 判断该用户是否已被分配;若为 true,则在 标签中加入 checked 属性。
? 完整优化代码示例
当前责任人
prepare(
"SELECT u.userid, u.username, u.Fname, u.inactive, r.userid, r.job_id
FROM users AS u
INNER JOIN job_responsible AS r ON u.userid = r.userid
WHERE u.inactive = 0 AND r.job_id = ?
ORDER BY u.Fname"
);
$getcurrentusers->bind_param("i", $getPostID); // ✅ 使用参数化防止SQL注入
$getcurrentusers->execute();
$resultgetcurrentusers = $getcurrentusers->get_result();
$getcurrentusers->close();
if ($resultgetcurrentusers->num_rows > 0) {
while ($row = $resultgetcurrentusers->fetch_assoc()) {
echo htmlspecialchars($row["username"]) . " (" . htmlspecialchars($row["Fname"]) . ")
";
$assignedUserIds[] = (int)$row["userid"]; // 安全转为整型并存入
}
} else {
echo "Der er ikke valgt nogle ansvarlige til denne opgave.";
}
?>
可添加的责任人
prepare(
"SELECT userid, username, Fname, inactive
FROM users
WHERE departmentid IN ($implodegetdepartmentview) AND inactive = 0
ORDER BY Fname"
);
$getusers->execute();
$resultgetusers = $get
users->get_result();
$getusers->close();
if ($resultgetusers->num_rows > 0) {
while ($row = $resultgetusers->fetch_assoc()) {
$isChecked = in_array((int)$row["userid"], $assignedUserIds) ? ' checked' : '';
echo '
';
}
} else {
echo "暂无符合条件的可用用户。";
}
?>
⚠️ 注意事项与最佳实践
- SQL 注入防护:左侧查询已改用 bind_param() 绑定 $getPostID,强烈建议右侧 IN 子句也通过动态占位符重构(如生成 ?, ?, ? 并批量绑定),避免字符串拼接风险。
- XSS 防护:所有输出到 HTML 的用户字段(如 username、Fname)均使用 htmlspecialchars() 转义,防止脚本注入。
- 数据类型一致性:$assignedUserIds 中统一存储 (int) 类型 ID,比对时也强制转换,避免因字符串 '1' 与整数 1 比较导致的潜在问题。
- 用户体验增强:可为已勾选项添加 CSS 样式(如 .checkbox-checked + label { font-weight: bold; color: #2c6eb4; }),提升视觉辨识度。
通过以上结构化处理,即可在保持逻辑清晰、安全可靠的前提下,高效实现双列表联动勾选,显著提升后台任务分配模块的专业性与可用性。
# php
# css
# html
# sql注入
# 防止sql注入
# lsp
# sql
# xss
# 数据类型
# while
# checkbox
# 字符串
# int
# 循环
# input
# 数据库
# 重构
# 勾选
# 可选
# 遍历
# 绑定
# 比对
# 中统
# 子句
# 暂无
# 第一个
# 列表中
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
高性价比服务器租赁——企业级配置与24小时运维服务
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
七夕网站制作视频,七夕大促活动怎么报名?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
使用spring连接及操作mongodb3.0实例
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
Android自定义控件实现温度旋转按钮效果
佛山网站制作系统,佛山企业变更地址网上办理步骤?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
,网页ppt怎么弄成自己的ppt?
网站优化排名时,需要考虑哪些问题呢?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Laravel怎么使用artisan命令缓存配置和视图
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
如何快速打造个性化非模板自助建站?
JavaScript如何实现路由_前端路由原理是什么
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
详解Android中Activity的四大启动模式实验简述
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
node.js报错:Cannot find module 'ejs'的解决办法
Laravel如何使用Blade组件和插槽?(Component代码示例)
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
Laravel storage目录权限问题_Laravel文件写入权限设置
独立制作一个网站多少钱,建立网站需要花多少钱?
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】
如何破解联通资金短缺导致的基站建设难题?
中国移动官方网站首页入口 中国移动官网网页登录
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
Laravel如何为API生成Swagger或OpenAPI文档
深圳网站制作平台,深圳市做网站好的公司有哪些?
如何快速上传建站程序避免常见错误?
如何在新浪SAE免费搭建个人博客?
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
无锡营销型网站制作公司,无锡网选车牌流程?
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
Laravel如何实现文件上传和存储?(本地与S3配置)
在Oracle关闭情况下如何修改spfile的参数
Laravel如何创建自定义Facades?(详细步骤)
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】


