当前位置:首页 > 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;

创建审批流程表:

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实现搜索功能

实现基本的搜索功能 在PHP中实现搜索功能通常涉及数据库查询。以下是一个简单的实现方式,假设使用MySQL数据库: <?php // 连接数据库 $conn = new mysqli('loc…

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php实现图片上传

php实现图片上传

实现图片上传的基本步骤 创建HTML表单用于文件上传,表单需设置enctype="multipart/form-data"属性,确保文件数据正确传输。 <form action="uploa…

php实现栈

php实现栈

栈的基本概念 栈(Stack)是一种遵循后进先出(LIFO)原则的数据结构。核心操作包括: push:元素入栈。 pop:元素出栈(返回并移除栈顶元素)。 peek:查看栈顶元素(不移…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…