Time 'Punching' System を開発しており、PHP でテーブルを作成して、2 つのテーブルから水平方向にデータを表示しようとしています。
tb_users AS u
tb_punch AS p
次のようにデータを表示したいと思います。
u.user p.punch p.punch p.punch p.punch
+-------+----------+----------+----------+----------+
|User 1 | 10:00:00 | 12:00:00 | 13:00:00 | 19:00:00 |
|User 2 | 08:00:00 | 12:00:00 | | |
|User 3 | 09:00:00 | | | |
+-------+----------+----------+----------+----------+
等々...
しかし、代わりに次の結果が得られます。
u.user p.punch p.punch p.punch p.punch p.punch p.punch p.punch
+-------+----------+----------+----------+----------+---------+----------+---------+
|User 1 | 10:00:00 | | | | | | |
|User 1 | 10:00:00 | 12:00:00 | | | | | |
|User 1 | 10:00:00 | 12:00:00 | 13:00:00 | | | | |
|User 1 | 10:00:00 | 12:00:00 | 13:00:00 | 19:00:00 | | | |
|User 2 | 10:00:00 | 12:00:00 | 13:00:00 | 19:00:00 |08:00:00 | | |
|User 2 | 10:00:00 | 12:00:00 | 13:00:00 | 19:00:00 |08:00:00 | 12:00:00 | |
|User 3 | 10:00:00 | 12:00:00 | 13:00:00 | 19:00:00 |08:00:00 | 12:00:00 |09:00:00 |
+-------+----------+----------+----------+----------+---------+----------+---------+
つまり、ユーザーごとにパンチをグループ化するために必要なときに、すべての PUNCH を各行で繰り返します。
これが私がこれをやろうとしている方法です:
$query = "SELECT u.user, p.punch FROM users u INNER JOIN punches p ON u.id = p.id_user"
$rt = pg_query($query) or die ("Error: [" . $query . "]");
$punches = array();
echo "<tbody>";
while($nt=pg_fetch_assoc($rt)){
echo "<tr>";
echo "<td>" . $nt[user] . "</td>";
$punches[] = $nt[punch];
foreach ($punches as $punch){
echo "<td>" . date('H:i:s',strtotime($punch)) . "</td>";
}
}
echo "</tr></tbody>";
?>
</table>
何が間違っている可能性があるかについての手がかりはありますか?ありがとうございました!