2012-07-29 4 views
0

J'utilise MYSQL et php pour insérer des données dans mon SQL.PHP mise à jour MYSQL table

J'ai deux tables utilisateurs et userrights. J'utilise la case à cocher pour afficher les droits sur la page d'édition de l'utilisateur. lorsque les droits sont désélectionnés ou sélectionnez Je ne veux pas mettre à jour ma table des droits d'utilisateur.

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'); 

Comment est-ce que je fais ceci?

+0

Veuillez clarifier ... demandez-vous comment écrire vos requêtes pour mettre à jour les permissions? ... Ou comment lier cette fonctionnalité à une case à cocher sur votre site (soit en utilisant la soumission de formulaire, soit Ajax)? –

+0

comment ajouter cette fonctionnalité au site juste en soumettant le formulaire – user1561124

Répondre

1

J'ai déjà eu un problème similaire auparavant.

La solution que j'ai trouvée est de tronquer la table et de réinsérer toutes les entrées sélectionnées.

+0

J'ai pensé à supprimer tous les enregistrements, puis ré-entrer les enregistrements à nouveau $ sql = "INSERT INTO userrights (1, 'add');"; $ sql. = "INSERT INTO userrights (1, 'edit');"; $ sql. = "INSERT INTO userrights (1, 'delete');"; $ result2 = requête mysql ($ sql); – user1561124

+0

@ user1561124: N'utilisez pas les fonctions 'mysql_ *' pour écrire du nouveau code. Ils ne sont plus entretenus et la communauté a commencé [processus de dépréciation] (http://goo.gl/KJveJ). Voir la * [boîte rouge] (http://goo.gl/GPmFd) *? Au lieu de cela, vous devriez en apprendre davantage sur les [instructions préparées] (http://goo.gl/vn8zQ) et utiliser soit [PDO] (http://php.net/pdo) ou [MySQLi] (http://php.net/ mysqli). Si vous ne pouvez pas décider lequel, [cet article] (http://goo.gl/3gqF9) vous aidera. Si vous choisissez PDO, [voici un bon tutoriel] (http://goo.gl/vFWnC). –

+0

@ user1561124: En outre, l'utilisation de la transaction PDO en conjonction avec des instructions préparées peut vous donner un énorme gain d'efficacité. –

0

Vous obtenez les données de la case à cocher (vrai ou faux)

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

D'abord, vous vérifier si l'utilisateur avait le droit. Si oui, vous devez vérifier si le droit (données de case à cocher) est défini sur false -> supprimer cette ligne de la table. Si l'utilisateur n'avait pas ce droit et la case à cocher est vrai, vous devez l'insérer dans votre mysql_table. Les commentaires doivent être remplacés par et if-clause dans votre code.

+0

si la permission ont déjà été ajouté et si je tente de sélectionner à nouveau, ils seront supprimés et comment puis-je ajouter la permission et mettre à jour utilisateur – user1561124

+0

le code ci-dessus n'était pas Achevée. oh fuuuuuuu! J'ai écrit quelque chose en allemand .... Tout est de ma faute. J'ai changé le code abvoe! – poldi