将数据库中的数据显示给特定用户(使用角色?)[关闭]
Posted
技术标签:
【中文标题】将数据库中的数据显示给特定用户(使用角色?)[关闭]【英文标题】:Display data from database to specific users (using roles?) [closed] 【发布时间】:2013-03-24 09:14:50 【问题描述】:我想向特定用户显示一些数据。我已经做过类似的事情,但不同之处在于角色编号是静态的。例如,我添加了一列并将“1”分配给特定用户,所以我写了 if($role == 1) do something 。这很好,因为它是一个静态数字。通过这种方式,我只向角色 1 的用户显示秘密信息。
现在我添加了一个新功能;管理员可以上传属于某个组的特定用户的信息。组的信息会有所不同。数据存储和检索都很好。那不是我的问题。例如,我想向 A 组中的用户 'a1'、'a2'、'a3' 显示文档 A(这是随机名称,我只是想让你更容易),向用户 'a4' 显示文档 B, 'a7','a35','a40'(属于 B 组)等等。
我知道如何存储/检索文档“A”并将其与用户“a1”、“a2”、“a3”及其组链接...但我不确定如何将每个文档显示给团体。文档 A 只能与一组链接(对于 B、C、D.. 等也是如此)。
TABLES
DOCUMENTS
Number - Title - File
1 - Document A - A.doc
2 - Document B - B.doc
DOC_USERS
Doc N - User N
1 - 10
1 - 15
2 - 7
DOC_GROUPS
Doc N - Group N
1 - 1
2 - 2
不要像以前那样说 if($role == 1)。我需要类似 if ($document == $group) 的东西。 我不能输入“A”或“B”或其他任何内容,因为它不是静态的。
有什么帮助吗?
【问题讨论】:
我们可以看看您的表是如何设置的吗? 没有代码很难理解问题是什么。没有代码,你是在寻求建议,这不适合 SO 我刚刚添加了一个表格。 我没有添加任何代码胡安,因为它工作正常。我知道如何检索值(组 ID、分配 ID、用户 ID)。我只是不明白如何比较它们并将信息限制为特定用户。 【参考方案1】:我会将这个逻辑移到查询而不是视图中。传入 user_id 作为参数,只返回允许用户查看的记录。看起来您的架构允许您根据您的用户 ID 或通过用户与组的关联授予对文档的权限(表结构中似乎缺少该权限,但您在描述中提到了它)
select documents.*
from documents
inner join doc_users on documents.number= doc_users.doc
where doc_users.user = ?
Union
select documents.*
from documents
inner join doc_groups on documents.number= doc_group.doc
inner join user_groups on user_groups.group = doc_groups.group
where user_groups.user = ?
我确信这个查询可以在没有联合的情况下完成,但这很容易阅读和理解。
【讨论】:
这更有意义!一个非常简单的方法,不知道为什么我试图通过使用角色来做到这一点哈哈。非常感谢以上是关于将数据库中的数据显示给特定用户(使用角色?)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章