我开发了一个员工午休时间追踪器,员工必须在午休时间前后打卡入场。我以分钟为单位计算了总休息时间,并将其保存在数据库中。我向人力资源部门提供了所有休息时间的报告。对我来说,具有挑战性的部分是提供一个报告,其中夜班员工第二天午餐休息时间应该在前一天出现。我所做的是,我每天创建一个8个字符的代码,该代码将为每个员工保存。
我需要提供的是摘要报告,其中将显示员工,其余列是该月的日子。
我现在有两个桌子。
!for_each_local .if ($spat ("@#Local","this") == 1) { .foreach /pS 1 /ps 4 (Token { dv /t this }) { as /c myClass .echo ${Token} } }
Table CODE:
ID | CODE | DATE_CREATED |
1 | 9VIHQIHE | 2019-03-30 |
2 | 6JFGGU9P | 2019-03-31 |
3 | UYVEWVN0 | 2019-04-01 |
现在,我需要一份报告,该报告将给我每个月每个雇员的总休息时间的摘要。
当我的搜索参数为2019年3月时,报告应如下所示。
Table BREAKTIME:
ID | EMPLOYEE | CODE | TOTAL_BREAKTIME
1 | JOHN | 9VIHQIHE | 00:59:01
2 | RYAN | 9VIHQIHE | 01:01:20
3 | JOHN | 6JFGGU9P | 01:15:08
4 | RYAN | 6JFGGU9P | 00:58:12
5 | JOHN | UYVEWVN0 | 00:57:32
6 | RYAN | UYVEWVN0 | 01:05:16
我没有编写任何代码,因为我不知道从哪里开始。
请,我需要你们的大力帮助。
非常感谢。
答案 0 :(得分:0)
您可以使用一个function gooseFilter(array) {
来完成此操作:
JOIN
将为您提供类似的数据集
SELECT
DATE_FORMAT(c.date_created, '%d') AS date,
b.employee,
b.total_breaktime
FROM
code c
JOIN breaktime b ON b.code = c.code
WHERE
DATE_FORMAT(date_created, '%Y-%m') = '2019-03'
ORDER BY employee , date_created;
然后您可以首先遍历此数据并将其重组为以30 JOHN 00:59:01
31 JOHN 01:15:08
30 RYAN 01:01:20
31 RYAN 00:58:12
为键的2D数组,以便每个“雇员”可以在最终输出中成为自己的行:
employee
导致:
while($b = $result->fetch_assoc()){
$employee = $b["employee"];
$date = $b["date"];
$time = $b["total_breaktime"];
$BreakTime[$employee][$date] = $time;
}
然后,您最终可以遍历该数据以将其输出到页面。
$BreakTime = array(
'JOHN' => array(
'30' => '00:59:01',
'31' => '01:15:08',
),
'RYAN' => array(
'30' => '01:01:20',
'31' => '00:58:12',
);
);
答案 1 :(得分:0)
更新:
下面的代码;
while($employees_breaktime = $result->fetch_assoc()){
$BreakTime[$employees_breaktime["employee"]] = $employees_breaktime;
}
foreach($BreakTime as $key => $val) {
echo "<tr><td>" .$key. "</td>";
for($d = 1; $d <= 31; $d++){
echo "<td>";
$BreakTime[$key][$d]; //LINE 207
echo "</td>";
}
echo "</tr>";
给出此错误:
注意:未定义的偏移量:第207行的E:\ xampp \ htdocs \ ett \ summary.php中的1
是什么意思?