0

我正在使用 MYSQL 和 php 将数据插入到我的 sql 中。

我有两个表用户和用户权限。

我正在使用复选框在用户编辑页面上显示权限。当取消选择或选择权限时,我不会更新我的用户权限表。

CREATE TABLE userrights (
  userid int(11) NOT NULL default '0',
  right_name varchar(50) collate latin1_general_ci NOT NULL default '',
  PRIMARY KEY  (userid,right_name)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;


INSERT INTO userrights (userid, right_name) VALUES
(1, 'add'),
(1, 'delete'),
(1, 'edit'),
(1, 'view'),
(2, 'add'),
(2, 'delete'),
(2, 'edit'),
(2, 'view');

CREATE TABLE users (
  id int(11) NOT NULL,
  `name` varchar(100) collate latin1_general_ci default NULL,
  email varchar(100) collate latin1_general_ci default NULL,
  pass varchar(42) collate latin1_general_ci default NULL,
  PRIMARY KEY  (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

INSERT INTO users (id, name, email, pass) VALUES
(1, 'name', 'email@email.com', '5f4dcc3b5aa765d61d8327deb882cf99'),
(2, 'name name', 'email2@email.com', '1a1dc91c907325c69271ddf0c944bc72');

我该怎么做呢?

4

2 回答 2

1

我以前也遇到过类似的问题。

我想出的解决方案是截断表格并重新插入所有选定的条目。

于 2012-07-29T16:24:42.560 回答
0

你得到复选框的数据(真或假)

$rows = mysql_num_rows(mysql_query("SELECT * FROM userrights WHERE id = 'x' and right_name = 'y'"); // Please use insted of mysql_* PDO or MySQLi 
if ($rows > 0)
{
        if ($checkbox == false)
        {
        mysql_query("DELETE FROM userrights WHERE id = 'x' AND right_name = 'y'");
        }
}
else
{
// Recht nicht vorhanden --> if checkbox == true
      if ($checkbox == true)
      {
      mysql_query("INSERT INTO... VALUES ($id, $right_name)
      }
}

首先,您检查用户是否有权。如果是,您需要检查右侧(来自复选框的数据)是否设置为 false --> 从表中删除该行。如果用户没有该权限并且复选框为真,则必须将其插入到 mysql_table 中。注释必须更改为代码中的 if 子句。

于 2012-07-29T17:08:54.103 回答