我创建了一个与users
表和teams
表连接的表。
用户只能属于一个团队,因此他们的帐户有一个 team_id。
如何显示所有不同的组以及属于该组的成员?
这是我的代码。目前只显示id为1的团队,user表中有1个team_id为1的用户
<?php
include_once 'dbconfig.php';
if(!$user->is_loggedin())
{
$user->redirect('index.php');
}
$user_id = $_SESSION['user_session'];
$stmt = $DB_con->prepare("SELECT * FROM teams
INNER JOIN users
ON teams.id=users.team_id
HAVING teams.id=1");
$stmt->execute();
$teamRow=$stmt->fetchall(PDO::FETCH_ASSOC);
?>
<h1>Teams</h1>
<table>
<tr>
<?php foreach($teamRow as $row): ?>
<th><?=$row['team_name']?></th>
</tr>
</tr>
<td> <?=$row['user_name']?></td>
</tr>
<?php endforeach; ?>
<a href="home.php">Home</a>
</table>
最佳答案
试试这个代码
1) 从查询中删除 HAVING 子句
,只对用户进行简单 JOIN
并添加 ORDER BY team_name ASC
。
2)在php循环中执行逻辑
<table>
<?php $teamName = ''; // assign teamName for loop ?>
<?php foreach($teamRow as $row): ?>
<?php
if($row['team_name'] != $teamName) {
$teamName = $row['team_name']; // set teamName for loop if not equal
?>
<tr>
<th><?=$row['team_name']?></th>
</tr>
<?php } ?>
<tr>
<td><?=$row['user_name']?></td>
</tr>
<?php endforeach; ?>
<tr>
<td><a href="home.php">Home</a></td>
</tr>
</table>
逻辑是:(用例)
- 在循环中,如果 $row team_name 不等于 teamName,则显示 teamName 并设置
- 然后显示用户名
- 再次循环,$row team_name 等于 teamName,因此不再显示 teamName
希望对你有帮助
关于php - 显示来自表连接 mysql 的某些 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34247517/