辦案筆記 | 偵探編號 04
後台動態插頁與 ?inc 傳令
進入後台管理(members/05-admin.php)之後,班級、學生、科別等功能不必每次都換一整頁網址,而是用動態插頁(include)在原地換內容。本篇標題若還不順口,可先當工作名,確認後再改。
1. 後台主頁的動態插座(include)
核心:外殼固定,零件可換。
-
走線示意
【members/05-admin.php】(後台視覺外殼:Navbar 等固定版面) │ ▼ 主機由上往下出貨,讀到 <main> 肚子裡 ┌──────────────────────────────────────────────┐ │ include "./include/students.php"; │ │ 把學生表格零件展開,吸進 <main> 容器裡。 │ └──────────────────────────────────────────────┘ -
為什麼 PHP 吸入要放在對的格子裡?
- 視覺卡位:HTML 格子在哪,include 進來的內容就出現在哪;表格要坐在畫面中央的
<main>,就要寫在<main>裡面。 - 出貨順序:伺服器先輸出外殼、打開
<main>,讀到裡面的include時才把零件併進來,畫面才不會錯位。
- 視覺卡位:HTML 格子在哪,include 進來的內容就出現在哪;表格要坐在畫面中央的
2. 網址傳令兵 ?inc
例:<a href="?inc=add_student">新增學生</a>
-
先後順序(因果)
- 先:按鈕一點,網址列出現
?inc=add_student,訊號掛進$_GET郵筒。 - 後:同一支 PHP 重新由上往下執行,讀到
$inc = $_GET['inc'];這類寫法時,才把郵筒裡的值接住。
- 先:按鈕一點,網址列出現
-
命名要對齊
inc(問號後面):網址參數名稱,開發者自訂(常取 include 前三字)。網址若寫?xyz=...,PHP 就要寫$_GET['xyz'],兩邊必須一致。$inc(錢字號變數):PHP 裡的置物盒,可改名$page、$box;常與參數同名只是好讀,不必同名也能運作。
3. 外殼與零件:同一條生命線共享 $pdo
-
鐵律
- 程式不會憑空變出
$pdo;一定要有人先include "db_conn.php";開門。 - 當
members/05-admin.php在最頂端已開門,再用include把students.php吸進來時,兩者在同一次請求裡執行,視為同一條生命線,底下的 SQL 可直接用外殼借到的$pdo。 - 零件檔通常不必再寫一次
include "db_conn.php";,否則等於重複開門,也失去「全家共享一把鑰匙」的清楚分工。(若有人直接打開零件檔網址、沒經過外殼,才需要另案處理。)
- 程式不會憑空變出