PHP 语言 实现加班申请功能

PHP阿木 发布于 2025-07-02 7 次阅读


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语言实现了加班申请功能,包括用户登录、加班申请表单、加班申请审核以及加班记录查询。在实际应用中,可以根据需求进行功能扩展和优化,如增加权限管理、邮件通知等。希望本文对您有所帮助。