2012-07-29 2 views
0

MYSQL과 PHP를 사용하여 SQL에 데이터를 삽입하고 있습니다.PHP MYSQL 업데이트 테이블

두 명의 사용자 및 사용자 테이블이 있습니다.

사용자 수정 페이지에 대한 권한을 표시하려면 확인란을 사용하고 있습니다. 권한이 선택 취소되거나 선택되지 않으면 내 userrights 테이블을 업데이트하지 않습니다.

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 protected]', '5f4dcc3b5aa765d61d8327deb882cf99'), 
(2, 'name name', '[email protected]', '1a1dc91c907325c69271ddf0c944bc72'); 

어떻게하면됩니까?

+0

당신의 쿼리를 작성하여 사용 권한을 업데이트하는 방법을 묻고 있습니까? 아니면 해당 기능을 사이트의 체크 박스 (양식 제출 또는 Ajax 사용)에 연결하는 방법은 무엇입니까? –

+0

양식을 제출하여 사이트에이 기능을 추가하는 방법 – user1561124

답변

1

전에 비슷한 문제가있었습니다.

제가 생각해 낸 해결책은 테이블을 잘라내어 선택한 항목을 모두 다시 삽입하는 것입니다.

+0

모든 레코드를 삭제 한 다음 레코드를 다시 입력 해보십시오. $ sql = "INSERT INTO userrights (1, 'add');"; $ sql. = "사용자 삽입 (1, '편집');"; $ sql. = "사용자 삽입 (1, '삭제');"; $ result2 = mysql_query ($ sql); – user1561124

+0

@ user1561124 : 새로운 코드를 작성하기 위해 mysql_ * 함수를 사용하지 마십시오. 더 이상 유지 관리되지 않으며 커뮤니티가 [지원 중단 프로세스] (http://goo.gl/KJveJ)를 시작했습니다. * [빨간색 상자] (http://goo.gl/GPmFd) *를 참조하십시오. 대신 [prepared statements] (http://goo.gl/vn8zQ)에 대해 알아야하고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/)를 사용해야합니다. mysqli). 어떤 것을 결정할 수 없다면 [이 기사] (http://goo.gl/3gqF9)가 도움이 될 것입니다. PDO를 선택하면 [여기는 좋은 가이드입니다] (http://goo.gl/vFWnC). –

+0

@ user1561124 : 또한 준비된 명령문과 함께 PDO 트랜잭션을 사용하면 엄청난 효율성이 향상됩니다. –

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) 
     } 
} 

가 먼저 확인 (true 또는 false) 체크 박스의 데이터를 얻을. 그렇다면 오른쪽 (체크 박스의 데이터)이 false로 설정되어 있는지 확인해야합니다. -> 테이블에서 해당 행을 삭제하십시오. 만약 사용자가 그 권한을 갖고 있지 않고 체크 박스가 참이라면, 당신은 그것을 mysql_table에 삽입해야한다. 코드에서 주석을 if 절로 변경해야합니다.

+0

에 이미 chnage chnage를 가지고 있습니다. 권한이 이미 추가 된 경우 다시 선택을 시도하면 삭제되고 어떻게 권한을 추가하고 동일한 시간에 사용자를 업데이트합니까? – user1561124

+0

위의 코드는 그렇지 않습니다. 완전한. 오오 와우! 나는 독일어로 무언가를 썼다. 나는 코드 abvoe를 바꿨다! – poldi