2017-02-09 79 views
0

我想在我的项目中为管理员分配2名员工,并且员工ID最少。如何从mysql获取最少员工ID的2行,并将其与当前会话用户进行比较?如何获取mysql中的前两行值并将其与会话用户变量的值进行比较?

例如:

EMP_ID | EMP_NAME

1 | Mike 
    2 | Peter 
    3 | Drake 
    4 | Oliver 
    5 | Andrew 

假设我的当前用户是奥利弗(EMP_ID-4),如何限制管理页面,从它的标签,并直接链接从用户除了麦克和彼得打开?如果管理员页面由Peter(EMP_ID-2)或Mike(EMP_ID-1)打开,那么它应该从admin选项卡打开并直接访问URL。请帮忙!!

+0

你尝试过什么?它的直接查询,通过检查用户是否属于1 | 2多数民众赞成它。 “select employee from employee where emp_id IN(1,2)”....如果用户不属于这个,那么不允许别的允许。 – rahulsm

+0

谢谢Rahul,但这张表只是一个例子。员工ID可以是4位或5位或6位。我想在用户注册时自动分配我的管理员。无论前两名员工是谁,他们都将是管理员。由于员工ID会有所不同。 –

+0

所以我的意思是,你说的是,前两个注册用户是管理员吗? – rahulsm

回答

0

这些步骤,

1)一旦用户将注册,前两个用户将例如说superadmin(1)和admin(2)休息都将是普通用户。

2)现在,当用户登录时,您需要将这些用户数据与emp_id一起保存到会话中。

3)现在,授权,是指用户将有机会获得哪些页面,你会火查询一样,

select emp_id from employee order by emp_id asc limit 2. 

该查询会给你只有那些顶级用户,这是在注册的IDS无论1或2或任何数字。

4)检查当前用户的EMP_ID(您已存储在会话)从查询哪些你上面写的前两名用户的EMP_ID存在,

如果存在,

然后访问所有网页,

其他

显示一条警告消息,您不授权或只是重定向到您的任何主页。

我相信,你现在的一切完成后,如果您按照这些步骤。

+0

它的工作。谢谢 –

+0

你是最受欢迎的队友! – rahulsm

0

这个确切的例子中,SQL是:

$bHasAdminAccess = db::getValue("SELECT count(*) FROM _USER_TABLE_ WHERE userid = ".$userIdLoggedIn." AND userid IN (SELECT userid FROM _USER_TABLE_ LIMIT 2)"); 

很好的问题应该是,为什么前两个?你不能简单地说低于两个?

$bHasAdminAccess = db::getValue("SELECT count(*) FROM _USER_TABLE_ WHERE userid = ".$userIdLoggedIn." AND userid <= 2"); 

万一的ID可能会改变,我只想补充另一列 “is_admin”,使表看起来像:

1 | Mike | 1 
    2 | Peter | 1 
    3 | Drake | 0 
    4 | Oliver | 0 
    5 | Andrew | 0 

不是代码将是:

$bHasAdminAccess = db::getValue("SELECT count(*) FROM _USER_TABLE_ WHERE userid = ".$userIdLoggedIn." AND is_admin = 1"); 
+0

不,我不能说它低于两个,因为员工编号也可以是4位或5位等。我演示的表仅仅是一个例子。 –

+0

嘿,我刚刚为你的例子修复了它,现在我得到了前两个ID并比检查它。 –

+0

请告诉我你是如何做到的? –

0

那么要得到前两名员工,您可以在查询中使用ORDER BY从句:

SELECT * FROM employee_table ORDER BY EMP_ID ASC LIMIT 2

现在您可以将session userEMP_ID相匹配,您将在此查询后作为结果的一部分获得该结果。

+0

感谢您的答复。但我没有得到如何与会话用户进行比较。由于查询结果两行,因此如何获取两个员工ID并将其与会话用户进行比较。 –

+0

您可以从查询中获得结果循环。如果任何id匹配,你可以重定向到管理页面,否则你可以限制它。 – DD77

相关问题