我们在mysql数据库中有员工考勤系统,但它没有报告功能,我正在尝试使用PHP生成报告。
让我解释清楚:
这些打卡进出存储在mysql数据库表(考勤)中。此表包含5个字段,如punch、punchout、employeeid、note、attendanceid。我们的员工姓名和其他详细信息存储在其他表( employee)中。
我的问题是,我希望在水平视图中使用这两个表生成一个报告。
示例:
column1 :员工姓名column2 : punchout column3 : punchout column4 :punchout列:punchout
我能够为所有员工生成每日报告,但希望生成每周/每月报告。
请帮帮忙。
发布于 2010-10-09 10:32:31
这听起来像是你在尝试做一个透视查询(切换行和列)。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']
);
}(请注意,这将为每个员工条目生成未定义的索引通知。您应该处理此问题,但这会使代码加倍)。
现在,您已经为每个员工安排了打卡/输出数据(希望MySQL可以通过order BY轻松地处理)。
现在你要做一些link的事情:
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这样的模板系统来处理这类事情。不知羞耻的插头:)
发布于 2010-10-08 19:26:27
报告格式太模糊了。应该是:
或
https://stackoverflow.com/questions/3889713
复制相似问题