Rumah >pembangunan bahagian belakang >tutorial php >Cara menggunakan PHP dan Vue untuk membangunkan mekanisme pengendalian pengecualian untuk kehadiran pekerja dalam talian
Cara menggunakan PHP dan Vue untuk membangunkan mekanisme pengendalian pengecualian untuk kehadiran pekerja dalam talian
Seterusnya, kami menggunakan PHP untuk membangunkan antara muka bahagian belakang. Pertama, kami mencipta fail bernama config.php untuk mengkonfigurasi maklumat sambungan pangkalan data. Kod sampel adalah seperti berikut:
<?php $host = 'localhost'; // 数据库主机名 $dbName = 'attendance'; // 数据库名 $username = 'root'; // 数据库用户名 $password = '123456'; // 数据库密码
Kemudian, kami mencipta fail bernama db.php untuk merangkum fungsi untuk operasi pangkalan data. Kod sampel adalah seperti berikut:
<?php function connect() { global $host, $dbName, $username, $password; $conn = new mysqli($host, $username, $password, $dbName); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } return $conn; } function query($conn, $sql) { $result = $conn->query($sql); $rows = array(); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $rows[] = $row; } } return $rows; } function insert($conn, $sql) { return $conn->query($sql); }
Seterusnya, kami mencipta fail bernama employee.php untuk menyediakan antara muka berkaitan pekerja. Kod sampel adalah seperti berikut:
<?php require_once 'config.php'; require_once 'db.php'; function getEmployees() { $conn = connect(); $sql = 'SELECT * FROM employee'; $rows = query($conn, $sql); $conn->close(); return $rows; } $method = $_SERVER['REQUEST_METHOD']; if ($method === 'GET') { echo json_encode(getEmployees()); }
Begitu juga, kami mencipta fail bernama attendance.php untuk menyediakan antara muka berkaitan kehadiran. Kod sampel adalah seperti berikut:
<?php require_once 'config.php'; require_once 'db.php'; function getAttendance($employeeId, $month) { $conn = connect(); $sql = "SELECT * FROM attendance WHERE employee_id = $employeeId AND DATE_FORMAT(date, '%Y-%m') = '$month'"; $rows = query($conn, $sql); $conn->close(); return $rows; } function addAttendance($employeeId, $date, $startTime, $endTime) { $conn = connect(); $sql = "INSERT INTO attendance (employee_id, date, start_time, end_time) VALUES ($employeeId, '$date', '$startTime', '$endTime')"; $result = insert($conn, $sql); $conn->close(); return $result; } $method = $_SERVER['REQUEST_METHOD']; if ($method === 'GET') { $employeeId = $_GET['employee_id']; $month = $_GET['month']; echo json_encode(getAttendance($employeeId, $month)); } elseif ($method === 'POST') { $employeeId = $_POST['employee_id']; $date = $_POST['date']; $startTime = $_POST['start_time']; $endTime = $_POST['end_time']; echo json_encode(addAttendance($employeeId, $date, $startTime, $endTime)); }
npm install vue axios --save
Seterusnya, kami mencipta fail bernama Attendance.vue untuk memaparkan rekod kehadiran. Kod sampel adalah seperti berikut:
<template> <div> <h2>考勤记录</h2> <div v-for="record in records" :key="record.id"> <p>{{ record.date }}: {{ record.start_time }} - {{ record.end_time }}</p> <p v-if="record.exception === 1" style="color: red;">异常</p> </div> </div> </template> <script> import axios from 'axios'; export default { data() { return { records: [], }; }, mounted() { this.getAttendance(); }, methods: { getAttendance() { const employeeId = 1; const month = '2021-01'; axios.get(`http://localhost/attendance.php?employee_id=${employeeId}&month=${month}`) .then((response) => { this.records = response.data; }) .catch((error) => { console.error(error); }); }, }, }; </script> <style scoped> h2 { font-size: 20px; font-weight: bold; } </style>
function checkException($startTime, $endTime) { $start = strtotime($startTime); $end = strtotime($endTime); $workStart = strtotime('09:00:00'); $workEnd = strtotime('18:00:00'); if ($start > $workStart && $end < $workEnd) { return 0; // 正常 } else { return 1; // 异常 } } function addAttendance($employeeId, $date, $startTime, $endTime) { $exception = checkException($startTime, $endTime); $conn = connect(); $sql = "INSERT INTO attendance (employee_id, date, start_time, end_time, exception) VALUES ($employeeId, '$date', '$startTime', '$endTime', $exception)"; $result = insert($conn, $sql); $conn->close(); return $result; }
Dalam fail Attendance.vue, kami boleh memaparkan maklumat pengecualian berdasarkan tanda pengecualian. Kod sampel adalah seperti berikut:
<template> <div> <h2>考勤记录</h2> <div v-for="record in records" :key="record.id"> <p>{{ record.date }}: {{ record.start_time }} - {{ record.end_time }}</p> <p v-if="record.exception === 1" style="color: red;">异常</p> </div> </div> </template>
Pada ketika ini, kami telah menyelesaikan pelaksanaan mekanisme pengendalian pengecualian untuk membangunkan sistem kehadiran pekerja dalam talian menggunakan PHP dan Vue.
Ringkasan
Artikel ini memperkenalkan cara menggunakan PHP dan Vue untuk membangunkan sistem kehadiran pekerja dalam talian, dan memfokuskan pada pelaksanaan mekanisme pengendalian pengecualian. Dengan mereka bentuk struktur jadual pangkalan data secara rasional, menggunakan PHP untuk membangunkan antara muka bahagian belakang, dan menggunakan Vue untuk membangunkan antara muka bahagian hadapan, kami boleh melaksanakan sistem kehadiran pekerja dalam talian dengan cekap dan meningkatkan ketepatan dan kecekapan pemprosesan data kehadiran. Pada masa yang sama, melalui pelaksanaan mekanisme pengendalian pengecualian, pengecualian kehadiran boleh ditemui dalam masa, menjadikannya lebih mudah untuk pengurus mengendalikan dan menjejaki.
Atas ialah kandungan terperinci Cara menggunakan PHP dan Vue untuk membangunkan mekanisme pengendalian pengecualian untuk kehadiran pekerja dalam talian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!