我们在mysql数据库中有员工考勤系统,但它没有报告功能,我正在尝试使用PHP生成报告。
让我解释一下:
员工每天都要打卡并打卡。这些打卡输入和输出存储在mysql数据库表(出勤)中。此表包含5个字段,如穿入,穿孔,员工,注释,出勤。我们的员工姓名和其他详细信息存储在其他表(员工)中。
我的疑问是我想在水平视图中使用这两个表生成报告。
示例:
column1:员工姓名 第2栏:打入 第3栏:打孔 第4栏:打卡 专栏:打孔
我能够为所有员工生成每日报告,但希望生成每周/每月报告。
请帮助。
感谢, 拉吉
答案 0 :(得分:1)
听起来你正在尝试进行数据透视查询(切换行和列)。 MySQL不支持此功能,但可以进行模拟。然而,获取所需数据并使用php解析它要容易得多。
这听起来像(这只是猜测)你希望员工成为该员工的第一列和所有打卡输入/输出。
以下是您想要做的事情:
$data = select_all_relevant_data_with_mysql();
$employees = array();
while ($row = $data->fetch()) {
$employees[$row['employee']][] = array(
'in' => $row['punchin']
, 'out' => $row['punchout']
);
}
(注意这会为每个Employee条目生成未定义的索引通知。你应该处理这个,但它会使代码加倍)。
现在您已经为每位员工安排了打卡/退出数据(希望按顺序,MySQL可以使用ORDER BY轻松处理)。
现在你做一些链接:
foreach ($employees as $name => $punches) {
echo <<<HTML
<tr><td>$name</td>
HTML;
foreach ($punches as $punch) {
echo <<<HTML
<td>$punch[in]</td><td>$punch[out]</td>
HTML;
}
echo '</tr>';
}
我建议使用像PHPTAL这样的模板系统来做这种事情。无耻的插头:))
答案 1 :(得分:0)
报告格式太模糊了。 应该是:
或