PHP的SQL报告显示在所有班级的同一个人

时间:2018-08-20 20:11:06

标签: php report multiple-tables

我正在尝试制作一份报告,以按日期显示每个班级的出席者。

我的桌子上每个人只有一个班级。

但是我的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>

image of result page

1 个答案:

答案 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';