我想尝试以下行
用户名| id |作用
SELECT u.username, u.id, r.role FROM ".TBL_USERS." u
INNER JOIN ".TBL_ADMIN_ROLES." r ON r.userid = u.id
WHERE u.userlevel > 3
目前,我使用以下代码来获得结果。
<?php
$q = $database->getAllAdmins();
while($row=mysql_fetch_assoc($q))
{
?>
<a class="main" href="profile.php?id=<? echo $row['id']; ?>"><? echo $row['username']; ?></a>
<ul>
<li><? echo $row['role']; ?></li>
</ul>
<?
}
?>
显然,这是循环并反复显示用户名。 我想要它做的是显示用户名一次,然后显示下面的每个角色。
有什么想法吗?谢谢:))
答案 0 :(得分:0)
如果您在查询中添加ORDER BY i.id
,则可以使用变量跟踪最后一位用户。
<?php
$q = $database->getAllAdmins();
$lastUserID = 0;
while($row=mysql_fetch_assoc($q))
{
$newUser = $lastUserID != $row['id'];
if($newUser) {
?>
<a class="main" href="profile.php?id=<? echo $row['id']; ?>"><? echo $row['username']; ?></a>
<ul>
<? }
?>
<li><? echo $row['role']; ?></li>
<? if($newUser) {
?>
</ul>
<? $lastUserID = $row['id'];
}
}
?>
答案 1 :(得分:0)
$q = $database->getAllAdmins();
$user = "";
while($row=mysql_fetch_assoc($q)) {
if ($user != $row['username']) {
if ($user != "") { echo "</ul>"; }
echo "<a class='main' href='profile.php?id={$row['id']}'>{$row['username']}</a>";
echo "<ul>";
}
echo "<li>{$row['role']}</li>";
$user = $row['username'];
}
我的回答与其他概念相同,只是更清洁。