php sql 报告显示同一个人 类
php sql report shows same person in all classes
我正在尝试制作一份报告,按日期显示每个 class 出席者的出席情况。
我的桌子只有一个人在一张 class。
但是我的 php sql 报告显示所有 class 都是同一个人。
表格 - attendant_record、_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>
image of result page
您需要将 SQL 查询修改为 select 只有每个人的组。
$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';
这将 select 仅记录组 table 中与每个人匹配的记录。
我假定列名 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';
我正在尝试制作一份报告,按日期显示每个 class 出席者的出席情况。
我的桌子只有一个人在一张 class。
但是我的 php sql 报告显示所有 class 都是同一个人。
表格 - attendant_record、_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>
image of result page
您需要将 SQL 查询修改为 select 只有每个人的组。
$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';
这将 select 仅记录组 table 中与每个人匹配的记录。 我假定列名 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';