PHP 实现加班申请功能:代码与实践
在当今快节奏的工作环境中,加班已成为许多职场人士的常态。为了提高工作效率,减少不必要的加班,企业通常会设立加班申请流程。本文将围绕PHP语言,探讨如何实现一个简单的加班申请功能,包括前端界面设计、后端逻辑处理以及数据库操作。
一、项目概述
加班申请功能主要包括以下模块:
1. 用户登录:确保只有授权用户才能提交加班申请。
2. 加班申请表单:用户填写加班时间、原因等信息。
3. 加班申请审核:管理员或上级审核加班申请。
4. 加班记录查询:用户查询自己的加班记录。
二、技术选型
1. 前端:HTML、CSS、JavaScript
2. 后端:PHP
3. 数据库:MySQL
4. 框架:可选,如Laravel、Symfony等,本文以原生PHP为例。
三、环境搭建
1. 安装PHP:从官网下载PHP安装包,并配置环境变量。
2. 安装MySQL:下载MySQL安装包,并配置环境变量。
3. 安装Apache:可选,用于本地测试,下载Apache安装包并配置。
4. 创建项目目录:在本地创建一个项目目录,如`加班申请系统`。
四、数据库设计
1. 用户表(users):
- id:主键,自增
- username:用户名
- password:密码
- role:角色(管理员、普通员工)
2. 加班申请表(overtime):
- id:主键,自增
- user_id:外键,关联用户表
- start_time:开始时间
- end_time:结束时间
- reason:加班原因
- status:审核状态(待审核、审核通过、审核不通过)
五、代码实现
1. 用户登录模块
登录页面(login.html):
html
<!DOCTYPE html>
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="login.php" method="post">
用户名:<input type="text" name="username" required><br>
密码:<input type="password" name="password" required><br>
<input type="submit" value="登录">
</form>
</body>
</html>
登录处理(login.php):
php
<?php
session_start();
include 'db.php'; // 引入数据库连接文件
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT FROM users WHERE username='$username' AND password='$password'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
$row = mysqli_fetch_assoc($result);
$_SESSION['user_id'] = $row['id'];
$_SESSION['role'] = $row['role'];
header('Location: index.php');
} else {
echo '用户名或密码错误!';
}
?>
2. 加班申请表单模块
加班申请页面(overtime.html):
html
<!DOCTYPE html>
<html>
<head>
<title>加班申请</title>
</head>
<body>
<form action="overtime.php" method="post">
开始时间:<input type="datetime-local" name="start_time" required><br>
结束时间:<input type="datetime-local" name="end_time" required><br>
加班原因:<textarea name="reason" required></textarea><br>
<input type="submit" value="提交申请">
</form>
</body>
</html>
加班申请处理(overtime.php):
php
<?php
session_start();
include 'db.php'; // 引入数据库连接文件
$start_time = $_POST['start_time'];
$end_time = $_POST['end_time'];
$reason = $_POST['reason'];
$sql = "INSERT INTO overtime (user_id, start_time, end_time, reason, status) VALUES ('{$_SESSION['user_id']}', '$start_time', '$end_time', '$reason', '待审核')";
mysqli_query($conn, $sql);
header('Location: index.php');
?>
3. 加班申请审核模块
审核页面(index.php):
html
<!DOCTYPE html>
<html>
<head>
<title>加班申请列表</title>
</head>
<body>
<h1>加班申请列表</h1>
<table>
<tr>
<th>开始时间</th>
<th>结束时间</th>
<th>原因</th>
<th>状态</th>
<th>操作</th>
</tr>
<?php
include 'db.php'; // 引入数据库连接文件
$sql = "SELECT FROM overtime WHERE status='待审核'";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr>";
echo "<td>" . $row['start_time'] . "</td>";
echo "<td>" . $row['end_time'] . "</td>";
echo "<td>" . $row['reason'] . "</td>";
echo "<td>" . $row['status'] . "</td>";
echo "<td><a href='approve.php?id=" . $row['id'] . "'>审核</a></td>";
echo "</tr>";
}
?>
</table>
</body>
</html>
审核处理(approve.php):
php
<?php
session_start();
include 'db.php'; // 引入数据库连接文件
$id = $_GET['id'];
$status = $_POST['status'];
$sql = "UPDATE overtime SET status='$status' WHERE id=$id";
mysqli_query($conn, $sql);
header('Location: index.php');
?>
4. 加班记录查询模块
加班记录查询页面(record.html):
html
<!DOCTYPE html>
<html>
<head>
<title>加班记录查询</title>
</head>
<body>
<form action="record.php" method="post">
用户名:<input type="text" name="username" required><br>
<input type="submit" value="查询">
</form>
</body>
</html>
加班记录查询处理(record.php):
php
<?php
session_start();
include 'db.php'; // 引入数据库连接文件
$username = $_POST['username'];
$sql = "SELECT FROM overtime WHERE user_id=(SELECT id FROM users WHERE username='$username')";
$result = mysqli_query($conn, $sql);
echo "<h1>$username 的加班记录</h1>";
echo "<table>";
echo "<tr>";
echo "<th>开始时间</th>";
echo "<th>结束时间</th>";
echo "<th>原因</th>";
echo "<th>状态</th>";
echo "</tr>";
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr>";
echo "<td>" . $row['start_time'] . "</td>";
echo "<td>" . $row['end_time'] . "</td>";
echo "<td>" . $row['reason'] . "</td>";
echo "<td>" . $row['status'] . "</td>";
echo "</tr>";
}
echo "</table>";
?>
六、总结
本文通过PHP语言实现了加班申请功能,包括用户登录、加班申请表单、加班申请审核以及加班记录查询。在实际应用中,可以根据需求进行功能扩展和优化,如增加权限管理、邮件通知等。希望本文对您有所帮助。
Comments NOTHING