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";

    // 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

如何只显示一次组名?

4

3 回答 3

0

您可以为此任务使用关联数组。例如,创建一个数组 $groups,并在您的 while 循环中执行类似的操作

    $groups[$re["name"]]["full_name"][] = $re["full_name"];

然后,当您通过 $groups 显示您的 html 循环并在其中循环通过全名时。

于 2013-09-18T21:19:33.440 回答
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,新建一个并回显新的组标题。

于 2013-09-18T21:37:21.863 回答
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 中查看演示http://sqlfiddle.com/#!2/0d104/1您可以使用 $row['users']

于 2013-09-18T21:43:41.217 回答