我有一组复选框,管理员可以勾选这些复选框来授予用户权限。就我而言,管理员可以单击这些复选框:Image on ImageShack 。这些复选框将允许用户查看这些国家/城市的数据。
http://img205.imageshack.us/img205/4170/screenshotao.png
我正在绞尽脑汁做以下事情:
1) 如何最好地将此权限插入我的数据库 2) 稍后如何计算出每个用户被允许的权限
目前,我正在考虑为每个复选框添加大量列到我的数据库中,并在那里放置 1 或 0。然后使用大量 if 函数检查这些!这在编码时会浪费时间。
还有什么我可以做的吗?我感谢任何帮助!
最佳答案
您需要SET data type 。 SET 或多或少是一个 bit field其中每个位都有一个名称:
ALTER TABLE user ADD COLUMN permissions SET(
'States',
'Cities',
'Africa',
'Asia',
'Australia',
'Europe',
...
);
选择可以查看亚洲数据的用户:
SELECT * FROM user WHERE FIND_IN_SET('Asia',permissions) > 0;
或者选择可以查看亚洲和欧洲但不能查看非洲的所有用户:
SELECT * FROM user WHERE permissions & 40 = 40 AND !(permissions & 4)
我会在 PHP 中进一步定义这些常量,那么你的代码应该非常可读:
define('PERMISSION_STATES', 1);
define('PERMISSION_CITIES', 2);
define('PERMISSION_AFRICA', 4);
define('PERMISSION_ASIA', 8);
define('PERMISSION_AUSTRALIA', 16);
define('PERMISSION_EUROPE', 32);
# ...
# Check if user can view data for Africa
if ($user['permissions'] & PERMISSION_AFRICA) {
# ...
# Check if user can Asia and Europe but not Africa
if ($user['permissions'] & PERMISSION_ASIA
&& $user['permissions'] & PERMISSION_EUROPE
&& !($user['permissions'] & PERMISSION_AFRICA)) {
# ...
关于php - 如何构造数据库中的一些数据以便以后检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1382992/