




本文介绍如何通过php将两个数据库查询结果(已分配用户与可选用户)同步展示,并在右侧可选用户列表中自动勾选左侧已关联的用户,提升任务责任人管理界面的交互准确性与开发效率。
要在右侧“可添加用户”列表中精准标记出已在左侧“当前责任人”中出现的用户(即自动勾选对应复选框),关键在于跨查询状态共享:先遍历并缓存左侧已关联用户的 ID,再在右侧循环中实时比对并动态添加 checked 属性。
第一步:收集已分配用户 ID 列表
在第一

第二步:在右侧循环中判断并渲染 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 = $getusers->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 "暂无符合条件的可用用户。";
}
?>
通过以上结构化处理,即可在保持逻辑清晰、安全可靠的前提下,高效实现双列表联动勾选,显著提升后台任务分配模块的专业性与可用性。