结合MySQL数据库,在PHP页面输出员工每天加班时长的柱状图,并可以按按选择的年份月份和周别显示
时间: 2024-05-12 09:13:03 浏览: 93
首先,需要在MySQL数据库中存储员工加班记录,包括员工ID、加班日期和加班时长等信息。可以创建一个名为overtime的表来存储这些信息:
```sql
CREATE TABLE overtime (
id INT(11) NOT NULL AUTO_INCREMENT,
employee_id INT(11) NOT NULL,
overtime_date DATE NOT NULL,
overtime_hours DECIMAL(4,2) NOT NULL,
PRIMARY KEY (id)
);
```
然后,在PHP页面中,可以使用以下代码获取指定年份月份和周别的员工加班时长数据:
```php
$year = 2021;
$month = 10;
$week = 3;
// 计算指定周别的日期范围
$start_date = date('Y-m-d', strtotime("{$year}-W{$week}-1"));
$end_date = date('Y-m-d', strtotime("{$year}-W{$week}-7"));
// 查询员工加班时长数据
$sql = "SELECT employee_id, SUM(overtime_hours) AS total_hours FROM overtime WHERE YEAR(overtime_date) = {$year} AND MONTH(overtime_date) = {$month} AND overtime_date >= '{$start_date}' AND overtime_date <= '{$end_date}' GROUP BY employee_id";
$result = mysqli_query($conn, $sql);
// 将数据存储为数组
$data = array();
while ($row = mysqli_fetch_assoc($result)) {
$data[$row['employee_id']] = $row['total_hours'];
}
```
接下来,可以使用第三方图表库(如Highcharts)生成柱状图。以下是一个简单的示例代码:
```html
<div id="chart"></div>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script>
Highcharts.chart('chart', {
chart: {
type: 'column'
},
title: {
text: '员工加班时长统计'
},
xAxis: {
categories: ['员工1', '员工2', '员工3'] // 替换为实际的员工姓名
},
yAxis: {
title: {
text: '加班时长(小时)'
}
},
series: [{
name: '加班时长',
data: [
<?php echo isset($data[1]) ? $data[1] : 0; ?>, // 替换为实际员工ID和加班时长数据
<?php echo isset($data[2]) ? $data[2] : 0; ?>,
<?php echo isset($data[3]) ? $data[3] : 0; ?>
]
}]
});
</script>
```
以上代码将输出一个简单的柱状图,显示指定年份月份和周别内每个员工的加班时长。你需要将其中的员工ID和姓名以及日期范围等信息替换为实际的数据。
阅读全文