2017-02-09 77 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

相關問題