当前位置:首页 > PHP

php如何实现值班表

2026-02-27 21:09:25PHP

实现值班表的方法

数据库设计

创建一个数据库表来存储值班信息,表结构可以包含以下字段:id(主键)、user_id(员工ID)、date(值班日期)、shift(班次,如早班、晚班等)。示例SQL如下:

CREATE TABLE duty_schedule (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    date DATE NOT NULL,
    shift VARCHAR(50) NOT NULL
);

添加值班记录

通过PHP表单提交值班信息,并将数据插入数据库。示例代码如下:

php如何实现值班表

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $user_id = $_POST['user_id'];
    $date = $_POST['date'];
    $shift = $_POST['shift'];

    $sql = "INSERT INTO duty_schedule (user_id, date, shift) VALUES (?, ?, ?)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$user_id, $date, $shift]);
}
?>

显示值班表

从数据库中查询值班信息并以表格形式展示。示例代码如下:

<?php
$sql = "SELECT u.name, d.date, d.shift FROM duty_schedule d JOIN users u ON d.user_id = u.id ORDER BY d.date";
$result = $pdo->query($sql);

echo "<table border='1'>";
echo "<tr><th>姓名</th><th>日期</th><th>班次</th></tr>";
foreach ($result as $row) {
    echo "<tr><td>{$row['name']}</td><td>{$row['date']}</td><td>{$row['shift']}</td></tr>";
}
echo "</table>";
?>

编辑和删除功能

提供编辑和删除值班记录的选项。编辑功能可以通过表单预填充原有数据,删除功能直接移除记录。示例代码如下:

php如何实现值班表

// 编辑
$sql = "UPDATE duty_schedule SET user_id = ?, date = ?, shift = ? WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$new_user_id, $new_date, $new_shift, $id]);

// 删除
$sql = "DELETE FROM duty_schedule WHERE id = ?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$id]);

排班算法

如果需要自动排班,可以设计简单的轮换算法。例如,按员工ID顺序轮流分配班次:

$users = $pdo->query("SELECT id FROM users")->fetchAll(PDO::FETCH_COLUMN);
$shifts = ['早班', '晚班'];
$start_date = new DateTime('2023-01-01');
$days = 30;

for ($i = 0; $i < $days; $i++) {
    $date = $start_date->format('Y-m-d');
    $shift = $shifts[$i % count($shifts)];
    $user_id = $users[$i % count($users)];

    $sql = "INSERT INTO duty_schedule (user_id, date, shift) VALUES (?, ?, ?)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$user_id, $date, $shift]);

    $start_date->add(new DateInterval('P1D'));
}

前端交互

使用HTML和CSS美化值班表界面,添加JavaScript实现动态操作。示例HTML表单:

<form method="post">
    <select name="user_id">
        <?php foreach ($users as $user): ?>
            <option value="<?= $user['id'] ?>"><?= $user['name'] ?></option>
        <?php endforeach; ?>
    </select>
    <input type="date" name="date">
    <select name="shift">
        <option value="早班">早班</option>
        <option value="晚班">晚班</option>
    </select>
    <button type="submit">提交</button>
</form>

通过以上方法,可以实现一个功能完整的PHP值班表系统。

标签: 如何实现php
分享给朋友:

相关文章

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注意…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…

php mvc实现

php mvc实现

PHP MVC 实现步骤 模型(Model)层 模型负责数据处理和业务逻辑,通常与数据库交互。创建一个基类模型,其他具体模型继承它。 class Model { protected $db;…

php 伪静态实现

php 伪静态实现

PHP 伪静态实现方法 伪静态(URL Rewrite)是一种通过服务器配置将动态URL转换为静态URL的技术,提升URL的可读性和SEO效果。以下是几种常见的实现方式: 使用Apache的mod_…

vue如何实现高亮

vue如何实现高亮

实现文本高亮的方法 在Vue中实现文本高亮通常可以通过以下几种方式完成: 使用v-html指令结合字符串替换 通过将需要高亮的文本部分替换为HTML标签(如<span class="highl…

vue如何实现截图

vue如何实现截图

Vue 实现截图的方法 在 Vue 中实现截图功能可以通过多种方式完成,以下是几种常见的实现方法: 使用 html2canvas 库 html2canvas 是一个流行的 JavaScript 库,…