gpt4 book ai didi

php - 用于在多对多查找表中添加/删除条目的 HTML 复选框 (PHP/MySQL)

转载 作者:行者123 更新时间:2023-11-29 04:28:23 28 4
gpt4 key购买 nike

我有以下实体:

雇员(id,fname,lname,...)

项目(id,...)

EMPLOYEE_PROJECT(员工 ID、项目 ID、...)

一名员工可以从事多个项目,一个项目可以由多名员工从事,因此使用 EMPLOYEE_PROJECT 表将它们关联起来。

我想在我的应用程序 (PHP/MySQL) 中为给定的项目 ID 生成一个表单,每个员工姓名旁边都有一个复选框,如果该员工 ID 的实体存在于该项目 ID 中,则该表单将显示为已选中EMPLOYEE_PROJECT 表,这将允许用户选中或取消选中任何员工,然后单击“更新”按钮以通过添加/删除 EMPLOYEE_PROJECT 表上的条目来从项目中添加/删除选定/未选定的员工。

我能够使用 IF 语句在 EMPLOYEE_PROJECT 表中存在的任何实体上显示“已检查”。我的问题是:

  1. 正确形成查询以获取列表。如果我通过 JOIN of EMPLOYEE ON EMPLOYEE_PROJECT 获取员工列表,它只显示参与项目的员工,而不是所有员工。我可以执行 LEFT JOIN 来显示所有内容,但这会重复拥有多个项目的员工的姓名,而我只想显示每个姓名一次。如果我添加一个 GROUP BY employee.id,我可以获得每个员工中只有一个的正确列表,但是结果不一定与正确的 project_id 匹配。如果我添加一个带有 project_id 的 HAVING,我会失去不在该项目中的员工(请记住,我想列出所有员工,但只在当前在该项目中的员工旁边显示一个勾号)。

  2. 假设我找出 #1 并且可以列出所有员工并在作为指定项目的 EMPLOYEE_PROJECT 实体存在的员工旁边显示一个勾号,我如何允许用户修改复选框,然后提交并让一个提交操作从 EMPLOYEE_PROJECT 表中添加/删除相关实体?

非常感谢!!

最佳答案

@zzarbi 对于 #2 是正确的。对于 #1,您需要一个子查询:

SELECT employee.*, (SELECT count(id) FROM employee_project 
WHERE project_id=<project_id> AND employee_id=employee.id)
AS in_project
FROM employee

关于php - 用于在多对多查找表中添加/删除条目的 HTML 复选框 (PHP/MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6821246/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com