Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan fungsi daftar masuk dan daftar keluar pekerja dalam PHP?

Bagaimana untuk melaksanakan fungsi daftar masuk dan daftar keluar pekerja dalam PHP?

WBOY
WBOYasal
2023-09-24 21:49:481382semak imbas

Bagaimana untuk melaksanakan fungsi daftar masuk dan daftar keluar pekerja dalam PHP?

Bagaimana untuk melaksanakan fungsi log masuk dan log keluar pekerja dalam PHP?

Dalam perusahaan moden, mengurus daftar masuk dan daftar keluar pekerja adalah tugas penting. Borang log masuk kertas tradisional telah digantikan secara beransur-ansur oleh pelbagai sistem log masuk elektronik. Artikel ini akan memperkenalkan cara menggunakan bahasa PHP untuk melaksanakan fungsi daftar masuk dan daftar keluar pekerja yang mudah.

Pertama, kita perlu mencipta pangkalan data untuk menyimpan maklumat pekerja dan rekod daftar masuk. Ia boleh dilaksanakan menggunakan MySQL atau pangkalan data hubungan lain Artikel ini mengambil MySQL sebagai contoh.

  1. Buat pangkalan data dan jadual

Mula-mula, buat pangkalan data bernama "kehadiran" dalam MySQL, kemudian buat jadual pekerja bernama "pekerja", dan jadual rekod daftar masuk dan daftar keluar bernama "daftar keluar" .

Struktur borang pekerja adalah seperti berikut:

CREATE TABLE employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    position VARCHAR(100) NOT NULL
);

Struktur borang rekod log masuk dan log keluar adalah seperti berikut:

CREATE TABLE checkinout (
    id INT PRIMARY KEY AUTO_INCREMENT,
    employee_id INT NOT NULL,
    checkin DATETIME NOT NULL,
    checkout DATETIME
);
  1. Tulis kod PHP

Seterusnya, kami menggunakan bahasa PHP untuk menulis halaman web ringkas untuk melaksanakan fungsi log masuk dan log keluar pekerja. Dalam fail index.php, pertama sekali kita perlu menyambung ke pangkalan data dan mengimport jadual.

<?php
// 连接到数据库
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "attendance";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}

// 导入表格
$sql = "CREATE TABLE IF NOT EXISTS employees (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL,
    position VARCHAR(100) NOT NULL
)";

if ($conn->query($sql) === FALSE) {
    echo "创建员工表格失败: " . $conn->error;
}

$sql = "CREATE TABLE IF NOT EXISTS checkinout (
    id INT PRIMARY KEY AUTO_INCREMENT,
    employee_id INT NOT NULL,
    checkin DATETIME NOT NULL,
    checkout DATETIME
)";

if ($conn->query($sql) === FALSE) {
    echo "创建签到签退记录表格失败: " . $conn->error;
}
?>

Kemudian, kami membuat borang untuk memasukkan maklumat pekerja.

<form action="index.php" method="post">
    <label for="name">姓名:</label>
    <input type="text" id="name" name="name" required>
    <br>
    <label for="position">职位:</label>
    <input type="text" id="position" name="position" required>
    <br>
    <input type="submit" value="添加员工">
</form>

Apabila mengklik butang "Tambah Pekerja", kami akan memasukkan maklumat pekerja ke dalam pangkalan data.

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = $_POST["name"];
    $position = $_POST["position"];

    $sql = "INSERT INTO employees (name, position) VALUES ('$name', '$position')";

    if ($conn->query($sql) === FALSE) {
        echo "添加员工失败: " . $conn->error;
    }
}
?>

Seterusnya, kami mencipta jadual untuk memaparkan maklumat pekerja dan butang daftar masuk dan daftar keluar.

<table>
    <tr>
        <th>ID</th>
        <th>姓名</th>
        <th>职位</th>
        <th>操作</th>
    </tr>
    <?php
    $sql = "SELECT * FROM employees";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            echo "<tr>";
            echo "<td>" . $row["id"] . "</td>";
            echo "<td>" . $row["name"] . "</td>";
            echo "<td>" . $row["position"] . "</td>";
            echo "<td><a href='checkinout.php?employee_id=" . $row["id"] . "'>签到/签退</a></td>";
            echo "</tr>";
        }
    } else {
        echo "<tr><td colspan='4'>暂无员工信息</td></tr>";
    }
    ?>
</table>

Akhir sekali, kita perlu mencipta fail checkinout.php untuk melaksanakan fungsi daftar masuk dan daftar keluar pekerja.

<?php
// 获取员工ID
$employee_id = $_GET["employee_id"];

// 如果是签到操作
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    date_default_timezone_set('Asia/Shanghai');
    $checkin = date("Y-m-d H:i:s");
    
    $sql = "INSERT INTO checkinout (employee_id, checkin) VALUES ('$employee_id', '$checkin')";
    
    if ($conn->query($sql) === FALSE) {
        echo "签到失败: " . $conn->error;
    }
}

// 如果是签退操作
if ($_SERVER["REQUEST_METHOD"] == "PUT") {
    date_default_timezone_set('Asia/Shanghai');
    $checkout = date("Y-m-d H:i:s");
    
    $sql = "UPDATE checkinout SET checkout='$checkout' WHERE employee_id='$employee_id' AND checkout IS NULL ORDER BY checkin DESC LIMIT 1";
    
    if ($conn->query($sql) === FALSE) {
        echo "签退失败: " . $conn->error;
    }
}

header("Location: index.php");
?>

Dengan kod di atas, kami boleh melaksanakan fungsi log masuk dan log keluar pekerja yang mudah. Apabila pekerja mengklik pautan "Log Masuk/Daftar Keluar", masa daftar masuk dan masa daftar keluar akan direkodkan dalam pangkalan data, dan butang log masuk dan daftar keluar akan dipaparkan dalam senarai pekerja.

Perlu diambil perhatian bahawa kod sampel yang disediakan dalam artikel ini hanyalah versi ringkas untuk melaksanakan fungsi log masuk dan log keluar pekerja Masih terdapat banyak butiran dan pertimbangan keselamatan yang perlu dikendalikan dalam projek sebenar.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi daftar masuk dan daftar keluar pekerja dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn