使用此代码:
$query = "select users.id_user, users.full_name, users.rights, users.group, group.id, group.name
from users
inner join group
on users.group=group.id
where users.rights= 2";
// connection code
while ($re = mysql_fetch_array($res))
{
$id_user = $re["id_user"];
$id_group = $re["id"];
$full_name= $re["full_name"];
$group_name= $re["name"];
echo "<div>";
echo "<p><strong>$group_name</strong></p>";
echo "$full_name<br />";
echo "</div>";
}
?>
我明白了:
组别1
用户1
组别1
用户2
组2
用户3
组2
用户4
我需要这样:
组别1
用户1
用户2
组2
用户3
用户4
如何只显示一次组名?
答案 0 :(得分:0)
您可以为此任务使用关联数组。例如,创建一个数组$ groups,并在while循环中执行类似
的操作 $groups[$re["name"]]["full_name"][] = $re["full_name"];
然后,当您通过$ groups显示您的html循环并在其中循环时通过全名循环。
答案 1 :(得分:0)
这就是我提出的:
$query = "SELECT users.id_user, users.full_name, users.rights, users.group, group.id, group.name
FROM users
INNER JOIN group
ON users.group=group.id
WHERE users.rights=2
ORDER BY group.name ASC";
// connection code
$group_name = '';
while ($re = mysql_fetch_array($res))
{
if( $group_name === '' )
{
$group_name = $re["name"];
echo "<div>";
echo "<p><strong>$group_name</strong></p>";
}
elseif( $group_name !== $re["name"] )
{
$group_name = $re["name"];
echo "</div>";
echo "<div>";
echo "<p><strong>$group_name</strong></p>";
}
$id_user = $re["id_user"];
$id_group = $re["id"];
$full_name= $re["full_name"];
echo "$full_name<br />";
}
?>
它基本上按组名排序结果,并且在迭代时,正在检查组名。如果它相同,则仅打印名称,如果它不同,则关闭div,创建一个新的名称并回显新的组标题。
答案 2 :(得分:0)
调整您使用数据库权限的查询,以便为您提供所需的信息。
select
usergroup.name
, GROUP_CONCAT(user.name SEPARATOR '<br />') 'users'
from
user
inner join
usergroup
on
user.usergroup_id = usergroup.id
where
user.rights = 2
group by
usergroup.id
在你的php中查看demo http://sqlfiddle.com/#!2/0d104/1你可以使用$ row ['users']