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

显示审批列表

显示待审批和已审批的列表:

php实现审批

// 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代码:

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 实现自动收货功能 自动收货功能通常用于电商系统,在订单超过一定时间未手动确认收货时自动完成订单。以下是实现方法: 数据库设计 需要订单表包含以下关键字段: CREATE TABLE…

php购物车实现

php购物车实现

PHP购物车实现方法 使用PHP实现购物车功能可以通过多种方式完成,以下是几种常见的实现方法: Session存储购物车数据 利用PHP的$_SESSION超全局变量存储购物车数据是最简单的方法。用…

php 实现登录

php 实现登录

PHP 登录功能实现 使用 PHP 实现登录功能通常需要结合数据库验证和会话管理。以下是一个基本的登录实现流程: 数据库准备 创建用户表存储用户名和密码(建议使用哈希加密): CREATE TAB…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Sessi…

php实现博客

php实现博客

使用PHP实现博客系统 数据库设计 创建数据库表存储博客文章和用户信息。常见的表包括posts(文章)和users(用户)。 CREATE TABLE users ( id INT AUTO…

php实现一个

php实现一个

PHP 实现一个简单的计算器 创建一个基本的计算器,支持加、减、乘、除运算。以下是一个完整的实现代码示例: <?php $result = ""; if ($_SERVER["REQUES…