全磁卡紀錄
對應程式: logs.php

業務功能
檢視所有學生的打卡(刷卡)紀錄,可依班級(kind)及上課日期篩選,用於確認學生出席狀況。
頁面操作
- 篩選班級:頁面上方列出所有 kind 連結,點擊可篩選特定班級的紀錄;點「全」可查看全部。
- 篩選日期:選擇班級後,會顯示該班的上課日期列表(來自
class_dates設定),點擊日期進一步篩選。 - 瀏覽紀錄:表格顯示地點、卡號、學號、學生姓名、打卡時間,最多顯示前 700 筆。
處理邏輯
- 透過 GET 參數
kind與date進行篩選,呼叫get_all_logs()取得資料。 - 若 kind > 0,SQL 條件加入
kind_id與log_datetime LIKE '{date}%'。 - room_name 優先從 log 紀錄本身取得,若無則從 rooms 對照表取得。
- username 若 log 中無值,會以 card_id 反查 cards 表取得學生姓名。
- 渲染過程中若發生資料異常(例如 Object 無法轉字串),會捕捉 Exception 收集到異常資料區。
- 頁面底部顯示「異常的資料」區塊,列出無法正常顯示的紀錄。
備註
- 頁面設定了自訂 error handler,將
E_RECOVERABLE_ERROR轉為 Exception 拋出,避免 PHP Catchable fatal error 導致頁面中斷。 - 預設上限 700 筆,無分頁功能,大量資料時需搭配日期篩選使用。
- 此頁面為唯讀檢視,不能刪除紀錄。若需刪除測試紀錄,請使用 12-刪測試的磁卡紀錄 頁面。
使用的 Functions
| Function | 定義於 |
|---|---|
get_all_rooms($is__key__room_id) | enter_logs/inc.php |
get_all_kinds($is__key__kind_id) | enter_logs/inc.php |
get_all_logs($where, $limit) | enter_logs/inc.php |
get_card_by_card_id($card_id) | enter_logs/inc.php(log 無 username 時補查) |
get_class_dates_by_class_prefix($kind_id) | enter_logs/inc.php |