gpt4 book ai didi

PHP - MySQL 查询,仅显示用户一次

转载 作者:行者123 更新时间:2023-11-29 06:59:04 25 4
gpt4 key购买 nike

晚上好,

我正在尝试更改包含用户角色的用户面板中的一些代码。我希望某些角色能够显示用户所在的每个角色,但某些角色我只希望它们显示一次。

用于此目的的 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 中,则应为他们所属的每个组列出 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 组?

更新

我的问题似乎有些困惑。我非常希望它能做到:

组 1
用户A

第 2 组
用户A

第 3 组
用户A

第 4 组

第 5 组
用户B

最佳答案

您可以反转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'];
}
}
}

关于PHP - MySQL 查询,仅显示用户一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44297779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com