从多个复选框更新数据时出现困惑

时间:2012-05-20 03:34:25

标签: php mysql arrays

我在表单上有一个复选框列表,用于更新用户的状态。 我想这样做,当在复选框中选择新用户时,它们会被插入到DB中,否则,如果未选中某些内容,但它在数据库中处于活动状态,则应将其停用。

我采纳了: 我从数据库中获取了2个数组,在那里我得到了哪些用户是活动的。 第二个来自提交的表单,哪些值已检查,但不知道我将如何计算要插入哪些数据以及哪一个应该处于非活动状态?

2 个答案:

答案 0 :(得分:1)

循环遍历数据库中的那些,如果用户未检查它们,则将其删除。

foreach ($from_db as $in_db) {
    if ( ! in_array($in_db, $from_user) {
        // TODO: remove $in_db from db
    }
}

然后遍历用户检查的那些,如果它们不在数据库中,则添加它们。

foreach ($from_user as $add_to_db) {
    if ( ! in_array($add_to_db, $from_db) {
        // TODO: add $add_to_db to db
    }
}

答案 1 :(得分:0)

只需比较两个数组,然后检查另一个数组中的每个项目。您可以将其中一个转换为哈希表,以便在走过另一个时更快地进行检查。

for each user_from_client {
  if (user_from_client in db) {
    if (!user_from_client.checked)
      db.deactivate(user_from_client);
  } else {
    if (user_from_client.checked)
      db.insert(user_from_client);
  }
}