php实现审批
PHP实现审批功能
审批功能通常涉及用户提交申请、管理员审核、状态更新等流程。以下是实现审批功能的常见方法和步骤。
数据库设计
创建数据表存储审批申请和状态。例如:
CREATE TABLE approval_requests (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
title VARCHAR(255) NOT NULL,
content TEXT NOT NULL,
status ENUM('pending', 'approved', 'rejected') DEFAULT 'pending',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
提交审批申请
创建表单供用户提交申请:
<form action="submit_request.php" method="post">
<input type="text" name="title" placeholder="申请标题" required>
<textarea name="content" placeholder="申请内容" required></textarea>
<button type="submit">提交申请</button>
</form>
处理提交的PHP代码:
// submit_request.php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$title = $_POST['title'];
$content = $_POST['content'];
$userId = $_SESSION['user_id']; // 假设用户已登录
$stmt = $pdo->prepare("INSERT INTO approval_requests (user_id, title, content) VALUES (?, ?, ?)");
$stmt->execute([$userId, $title, $content]);
header('Location: requests.php');
exit;
}
显示审批列表
显示待审批和已审批的列表:
// requests.php
$stmt = $pdo->prepare("SELECT * FROM approval_requests WHERE user_id = ? ORDER BY created_at DESC");
$stmt->execute([$_SESSION['user_id']]);
$requests = $stmt->fetchAll();
管理员审批处理
创建管理员界面显示待审批请求:
// admin_approvals.php
$stmt = $pdo->query("SELECT * FROM approval_requests WHERE status = 'pending'");
$pendingRequests = $stmt->fetchAll();
添加审批操作按钮:
foreach ($pendingRequests as $request) {
echo "<div>
<h3>{$request['title']}</h3>
<p>{$request['content']}</p>
<a href='approve.php?id={$request['id']}'>批准</a>
<a href='reject.php?id={$request['id']}'>拒绝</a>
</div>";
}
处理审批操作的PHP代码:
// approve.php
if (isset($_GET['id'])) {
$id = $_GET['id'];
$stmt = $pdo->prepare("UPDATE approval_requests SET status = 'approved' WHERE id = ?");
$stmt->execute([$id]);
header('Location: admin_approvals.php');
exit;
}
// reject.php
if (isset($_GET['id'])) {
$id = $_GET['id'];
$stmt = $pdo->prepare("UPDATE approval_requests SET status = 'rejected' WHERE id = ?");
$stmt->execute([$id]);
header('Location: admin_approvals.php');
exit;
}
状态通知
审批状态更新后发送通知:
// 在approve.php或reject.php中添加
$stmt = $pdo->prepare("SELECT user_id FROM approval_requests WHERE id = ?");
$stmt->execute([$id]);
$userId = $stmt->fetchColumn();
// 存储通知或发送邮件
$message = "您的申请已" . ($_SERVER['SCRIPT_NAME'] === '/approve.php' ? '批准' : '拒绝');
$stmt = $pdo->prepare("INSERT INTO notifications (user_id, message) VALUES (?, ?)");
$stmt->execute([$userId, $message]);
进阶功能
添加多级审批流程:
ALTER TABLE approval_requests ADD COLUMN current_level INT DEFAULT 1;
ALTER TABLE approval_requests ADD COLUMN max_level INT DEFAULT 1;
创建审批流程表:
CREATE TABLE approval_workflows (
id INT AUTO_INCREMENT PRIMARY KEY,
request_id INT NOT NULL,
level INT NOT NULL,
approver_id INT NOT NULL,
status ENUM('pending', 'approved', 'rejected') DEFAULT 'pending',
FOREIGN KEY (request_id) REFERENCES approval_requests(id)
);
这些代码示例展示了PHP实现审批功能的基本框架,可根据实际需求进行扩展和修改。







