我正在尝试制作一份报告,以按日期显示每个班级的出席者。
我的桌子上每个人只有一个班级。
但是我的php sql报告在所有类中都显示相同的人。
表-话务员记录,_person,_person_group
<?php
$sql = 'SELECT * FROM _person, attendance_record, _person_group WHERE _person.id = attendance_record.personid ORDER BY
attendance_record.date';
$query = mysqli_query($conn, $sql);
if (!$query) {
die ('SQL Error: ' . mysqli_error($conn));
}
?>
<html>
<head>
<title>Attendance Report</title>
</head>
<body>
<table>
<caption class="title">Attendance Report</caption>
<thead>
<tr>
<th>NO</th>
<th>FirstName</th>
<th>LastName</th>
<th>Class</th>
<th>Present</th>
<th>DATE</th>
</tr>
</thead>
<tbody>
<?php
$no = 1;
while ($row = mysqli_fetch_array($query))
{
echo '<tr>
<td>'.$row['personid'].'</td>
<td>'.$row['first_name'].'</td>
<td>'.$row['last_name'].'</td>
<td>'.$row['name'].'</td>
<td>'.$row['present'].'</td>
<td>'. date('F d, Y', strtotime($row['date'])) . '</td></tr>
';
$no++;
}?>
</tbody>
</table>
</body>
</html>
答案 0 :(得分:0)
您需要修改SQL查询以仅选择每个人的组。
$sql = 'SELECT * FROM _person, attendance_record, _person_group WHERE
_person.id = attendance_record.personid
AND
_person.group_id = _person_group.group_id
ORDER BY
attendance_record.date';
这将仅从组表中选择与每个人匹配的记录。 我假设使用列名 group_id ,但是您可以更改为列名。
编辑:按日期过滤时,请使用类似以下内容(如果所有日期都相同,则不再需要按日期排序)。
$sql = 'SELECT * FROM _person, attendance_record, _person_group WHERE
_person.id = attendance_record.personid
AND
_person.group_id = _person_group.group_id
AND
_attendance_record.date = '2018-09-08';