当前位置:首页 > PHP

php实现审批

2026-01-29 14:52:52PHP

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;

创建审批流程表:

php实现审批

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实现审批功能的基本框架,可根据实际需求进行扩展和修改。

标签: php
分享给朋友:

相关文章

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

php队列的实现

php队列的实现

PHP队列的实现方式 PHP中实现队列功能可以通过多种方式,根据需求选择适合的方案: 使用数组实现基础队列 PHP数组本身支持队列操作,利用array_push和array_shift函数: $q…

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ? (…

php实现过程

php实现过程

PHP 实现过程 PHP 是一种广泛使用的服务器端脚本语言,特别适合 Web 开发。以下是 PHP 实现过程的关键步骤和注意事项。 安装与配置 下载并安装 PHP,可以从官方 PHP 网站获取最新版…

php实现异步图片上传

php实现异步图片上传

异步图片上传的实现方法 在PHP中实现异步图片上传通常需要结合前端JavaScript和后端PHP代码。以下是几种常见的方法: 使用XMLHttpRequest或Fetch API 前端使用Java…

php实现投票

php实现投票

PHP实现投票功能 数据库设计 创建数据库表存储投票数据,例如: CREATE TABLE `votes` ( `id` int(11) NOT NULL AUTO_INCREMENT,…