註冊

辦案筆記 | 偵探編號 04

後台動態插頁與 ?inc 傳令

進入後台管理(members/05-admin.php)之後,班級、學生、科別等功能不必每次都換一整頁網址,而是用動態插頁(include)在原地換內容。本篇標題若還不順口,可先當工作名,確認後再改。

1. 後台主頁的動態插座(include)

核心:外殼固定,零件可換。

  1. 走線示意

    【members/05-admin.php】(後台視覺外殼:Navbar 等固定版面)
           │
           ▼ 主機由上往下出貨,讀到 <main> 肚子裡
     ┌──────────────────────────────────────────────┐
     │ include "./include/students.php";            │
     │ 把學生表格零件展開,吸進 <main> 容器裡。      │
     └──────────────────────────────────────────────┘
  2. 為什麼 PHP 吸入要放在對的格子裡?

    • 視覺卡位:HTML 格子在哪,include 進來的內容就出現在哪;表格要坐在畫面中央的 <main>,就要寫在 <main> 裡面。
    • 出貨順序:伺服器先輸出外殼、打開 <main>,讀到裡面的 include 時才把零件併進來,畫面才不會錯位。

2. 網址傳令兵 ?inc

例:<a href="?inc=add_student">新增學生</a>

  1. 先後順序(因果)

    • 先:按鈕一點,網址列出現 ?inc=add_student,訊號掛進 $_GET 郵筒。
    • 後:同一支 PHP 重新由上往下執行,讀到 $inc = $_GET['inc']; 這類寫法時,才把郵筒裡的值接住。
  2. 命名要對齊

    • inc(問號後面):網址參數名稱,開發者自訂(常取 include 前三字)。網址若寫 ?xyz=...,PHP 就要寫 $_GET['xyz'],兩邊必須一致。
    • $inc(錢字號變數):PHP 裡的置物盒,可改名 $page$box;常與參數同名只是好讀,不必同名也能運作。

3. 外殼與零件:同一條生命線共享 $pdo

  1. 鐵律

    • 程式不會憑空變出 $pdo;一定要有人先 include "db_conn.php"; 開門。
    • members/05-admin.php 在最頂端已開門,再用 includestudents.php 吸進來時,兩者在同一次請求裡執行,視為同一條生命線,底下的 SQL 可直接用外殼借到的 $pdo
    • 零件檔通常不必再寫一次 include "db_conn.php";,否則等於重複開門,也失去「全家共享一把鑰匙」的清楚分工。(若有人直接打開零件檔網址、沒經過外殼,才需要另案處理。)

與 03 的分工

辦案筆記 | 偵探編號 03 · 後端核心動作鑑識:單檔 API,註冊 INSERT、登入 SELECT COUNT。

本篇:多檔後台,include 換內容 + ?inc 傳令。