0

MYSQL と php を使用して、データを SQL に挿入しています。

ユーザーとユーザー権限の 2 つのテーブルがあります。

チェックボックスを使用して、ユーザー編集ページに権限を表示しています。権利の選択が解除されたとき、またはユーザー権利テーブルを更新しないことを選択したとき。

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

チェックボックスのデータを取得します(trueまたはfalse)

$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に設定されているかどうかを確認する必要があります->テーブルからその行を削除します。ユーザーにその権利がなく、チェックボックスが true の場合は、それを mysql_table に挿入する必要があります。コード内のコメントを if-clause に変更する必要があります。

于 2012-07-29T17:08:54.103 に答える