php 多选框 mysql_PHP和Mysql使用复选框形式更新多对多的关系

我有很多表结构和更新复选框表单.

目标是使用users_project表将users表与projects表相关联.这样,每个项目可以有很多用户,每个用户可以有很多项目.

每个用户编辑页面上的表单看起来都是这样的

project 1

project 2

以下是三个表的示例.

用户表

+----+-----------+

| id ¦ username ¦

+----+-----------+

| 1 ¦ user 1 ¦

| 2 ¦ user 2 ¦

+----+-----------+

项目表

+----+-----------+

¦ id ¦ title ¦

+----+-----------+

| 1 ¦ project 1 ¦

| 2 ¦ project 2 ¦

+----+-----------+

user_projects表

该表基于它们的id来关联上面的两个表

+----+-------------+---------+

| id ¦ project_id ¦ user_id |

+----+-------------+---------+

| 1 ¦ 1 ¦ 2 |

| 2 ¦ 2 ¦ 1 |

+----+-------------+---------+

我已经创建了一个复选框表单来添加和编辑这些值.在每个用户页面上,它显示项目表中的所有项目.然后查询user_projects表并找到匹配列表以向复选框添加检查.

但是如何将这些值编辑到数据库中?我如何知道用户是否已取消选中以前选中的复选框或检查空框并更新到数据库而不在project_id和user_id的users表上循环查询匹配项?

这是我希望最终结果实现的粗略概念.

if ($_POST['editing']) {

$totalprojects = $_POST['editing'];

$query = "

SELECT *

FROM user_projects

WHERE user_id = user_id

AND project_id = project_id

";

$result = $mysqli->query($query);

$count = $mysqli->affected_rows;

for($i=0; $i < $totalprojects; $i++) {

if ($count == 1) {

if ($box == checked){

//do nothing

}

else {

//delete from database

}

}

if ($count == 0) {

if ($box == checked){

//add to database

}

else {

//do nothing

}

}

}

}

这根本不是一个好主意,因为我必须至少为项目表中的每个项目查询一次数据库.必须有一个更好的解决方案,我想象的是一个常见的问题.我知道我只是想错了.

注意:我已经考虑过序列化一个数组并将其粘贴在用户列中,但这是不可接受的,因为我无法将项目与仅用户的用户联系到项目并且无法实现目的.

我希望这可以在没有任何javascript技巧的情况下实现.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值