如何在双列表界面中实现已关联用户的自动勾选功能

发布时间 - 2026-01-31 00:00:00    点击率:

本文介绍如何通过php将两个数据库查询结果(已分配用户与可选用户)同步展示,并在右侧可选用户列表中自动勾选左侧已关联的用户,提升任务责任人管理界面的交互准确性与开发效率。

要在右侧“可添加用户”列表中精准标记出已在左侧“当前责任人”中出现的用户(即自动勾选对应复选框),关键在于跨查询状态共享:先遍历并缓存左侧已关联用户的 ID,再在右侧循环中实时比对并动态添加 checked 属性。

✅ 实现步骤详解

  1. 第一步:收集已分配用户 ID 列表
    在第一个 while 循环中,不直接输出,而是将每个匹配用户的 userid 存入一个索引数组(如 $assignedUserIds)。注意:务必在执行第二个查询前完成该数组构建。

  2. 第二步:在右侧循环中判断并渲染 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透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】