管理磁卡 cards

對應程式: cards.php

05-管理磁卡cards

業務功能

管理學生磁卡(或 QR Code)的核心資料,包含卡號、姓名、學號、手機(編碼儲存)、Email(編碼儲存)。此頁是打卡系統中最常用的資料匯入頁面。

頁面操作

新增磁卡

在 textarea 中貼入資料(通常從 Google Spreadsheets 複製),一行一筆,欄位以反引號(`)或 Tab 分隔,共 5 欄:

磁卡號碼`姓名`學號`手機`Email

可同時勾選:

  • 同時加入 card_kind:建立卡片與班級的對應關係。可選建立新 kind 或使用已存在的 kind_id。
  • 同時加入 card_inputs:自動以 card_id 作為 card_input 建立晶片碼對應。

前台測試

頁面提供各教室的前台嗶卡連結與學生自查紀錄連結,方便匯入後立即測試。

刪除磁卡

點擊「顯示全部 cards/qrcodes」後,可勾選要刪除的卡片資料,支援全選,送出後經確認對話框刪除。

處理邏輯

  • 手機號碼自動移除 - 分隔符。
  • 手機與 Email 會分別經 encode_phone_and_school_no()encode_email_and_school_no() 編碼後存入 encodehashencodehash2 欄位,不儲存明碼
  • get_card_by_card_id() 檢查卡號是否已存在,若已存在則 die() 中止。
  • 勾選「同時加入 card_kind」時:
    • 選「新 kind」:驗證名稱格式後新增 kind 再建立對應。
    • 選「已有 kind」:以 kind_id 查表確認存在後建立對應。
  • 勾選「同時加入 card_inputs」時,自動以 card_id = card_input 寫入。
  • 刪除功能使用 SQL DELETE ... WHERE card_id IN (...) 批次刪除。

備註

  • 此頁整合了 kind.phpcard_kind.phpcard_inputs.php 三個頁面的功能,是日常匯入新班級資料的主要操作入口。
  • 新增時若遇到重複 card_id 會直接 die() 中止,不會繼續處理後續資料,操作前需確認資料無重複。
  • 刪除功能只刪除 TBL_ENTER_CARDS 表的資料,不會連帶刪除 card_kind 與 card_inputs 的對應(如需完整刪除,應使用 08-依學號刪資料09-依卡號刪資料 頁面)。

使用的 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_cards()enter_logs/inc.php
get_card_by_card_id($card_id)enter_logs/inc.php
get_kind_by_kind_name($kind_name)enter_logs/inc.php
get_matched_classprefix($str, $is_detect_at_first)_aiacademy_helper.php
get_relatiionship_by_card_id_and_kind_id($card_id, $kind_id)enter_logs/inc.php
get_card_id_by_card_input($card_input)enter_logs/inc.php
get_card_input_by_card_id($card_id)enter_logs/inc.php
encode_phone_and_school_no($phone, $school_no)enter_logs/inc.php
encode_email_and_school_no($email, $school_no)enter_logs/inc.php
$wpdb->insert() / $wpdb->query()WordPress core