2017-06-01 38 views
0

晚上好,PHP - MySQL查詢,僅顯示用戶

我試圖改變包含用戶角色的用戶面板的某些代碼。我希望某些角色能夠顯示用戶所在的每個角色,但某些角色我只希望他們顯示一次。

用於此的MySQL表是:

id | username | password | displaygroup | usergroups 
1 | User A | Pass A | 2   | 1,2,3 
2 | User B | Pass B | 5   | 1,2,3,4,5 

例如,如果用戶A是在組1,2和3,它們應當爲每個組中列出三次他們的一部分。一旦用戶在一個更高的組中,比如用戶B,我只希望他們在最高組中顯示一次。

正在使用的舊的查詢是:

$query = $db->query("SELECT * FROM users WHERE displaygroup = '2' ORDER BY id"); 
while ($array = $db->assoc($query)) { 
    echo $array['username']; 
} 

隨着該查詢,用戶A將只顯示一次。

我曾嘗試以下:

$query = $db->query("SELECT * FROM users ORDER BY id"); 
while ($array = $db->assoc($query)) { 
    $role = explode(',', $array['usergroups']); 
    foreach ($role as $value) { 
    if ($value == 1) { 
     echo $array['username']; 
    } 
    if ($value == 2) { 
     echo $array['username']; 
    } 
    } 
} 

通過上述,它爲用戶A完全沒有問題,因爲它顯示了他們對組1,2和3,他們是在

。但是,用戶B現在正在出現,因爲他們也在這些角色中。

我該如何獲得它,以便用戶A繼續顯示組1,2和3,並且用戶B僅顯示組5?

UPDATE

似乎是我的問題混淆。我非常想要它做的:

組1
用戶A

組2
用戶A

組3
用戶A

集團4

5族
用戶B

+0

你能再次解釋一下,用戶B如何顯示一次而不是5次? –

+0

嗨Umashankar,我想要它,所以如果用戶在一個高於3的組中,它只會列出他們的最高組的一次,在這種情況下,用戶B是5.我不希望用戶B列在組1,2 ,3或4.如果用戶位於小於4的組中,我希望他們每次列出,在這種情況下,用戶A是1,2和3.我希望用戶A列在組1,2和3下,但不是4和5。 –

+0

你在你的問題中說,「但某些角色我只希望他們顯示一次」。他們一次只能顯示哪些具體角色? –

回答

2

可以逆轉role陣列和從最後的值進行檢查。如果像5這樣的更高值存在,請執行您的操作並打破循環。

$query = $db->query("SELECT * FROM users ORDER BY id"); 
while ($array = $db->assoc($query)) { 
    $role = explode(',', $array['usergroups']); 
    $role = array_reverse($role); 
    foreach ($role as $value) { 
    if($value == 5) { 
     echo $array['username']; 
     break; 
    } 
    if ($value == 1) { 
     echo $array['username']; 
    } 
    if ($value == 2) { 
     echo $array['username']; 
    } 
    } 
} 
+0

謝謝!奇蹟般有效。 –