如果相同则显示一次数据

时间:2013-09-18 21:11:12

标签: php mysql

使用此代码:

    $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

如何只显示一次组名?

3 个答案:

答案 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']