2017-06-01 20 views
0

おはよう、PHP - MySQLクエリ、一度だけ表示する

ユーザロールを含むユーザパネルからいくつかのコードを変更しようとしています。私は特定の役割を自分の役割ごとに表示するようにしたいと思いますが、特定の役割は一度しか表示したくありません。

このために使用されているMySQLのテーブルがある:ユーザAがグループ1、2及び3である場合、例えば

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 

、彼らはの一部だ各群について3回表示されなければなりません。ユーザーBのように上位のグループにいるユーザーは、そのグループの上位グループに1回だけ表示します。

使用されていた昔のクエリは以下の通りであった。そのクエリで

$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']; 
    } 
    } 
} 

、それは彼らがしていることをグループ1、2及び3のためにそれらを示して、それは、ユーザAのための完全に正常に動作し

。ただし、ユーザーBもその役割にあるため、表示されています。

ユーザーAはグループ1,2および3に対して表示を続け、ユーザーBはグループ5のみを表示するにはどうすればよいですか?

UPDATE

私の質問で混乱があるようです。私はかなりそれが何をしたい:

グループ1
ユーザー

グループ2
ユーザー

グループ3
ユーザー

グループ4

グループ5
ユーザB

+0

ユーザーBを1回表示する方法と5回表示させない方法を再度説明できますか? –

+0

こんにちはUmashankar、私はそれが欲しいので、ユーザーが3以上のグループにいる場合、最高のグループのために一度それらをリストアップします。この場合、ユーザーBは5です。ユーザーBはグループ1,2ユーザーが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

ありがとう!魅力のように動作します。 –

関連する問題