首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 學生管理系統完整實作教學(含原始碼)

     編輯:PHP 綜合知識

前言

本文將完整展示一個基於 PHP + MySQL 的學生資料管理系統,包含新增、刪除、修改、查詢等核心 CRUD 功能。系統採用 PDO 連接資料庫,程式碼結構清晰,適合初學者參考學習。

系統功能架構

  • 資料操作:支援學生資料的新增、刪除、修改與列表顯示
  • 資料儲存:使用 MySQL 資料庫持久化儲存
  • 介面分工:
檔案功能說明
index.php主介面 - 顯示學生列表、提供修改/刪除入口
add.php新增學生資料表單
edit.php修改學生資料表單
action.php處理表單提交(新增/刪除/修改)與資料庫互動
menu.php共用導航選單

核心程式碼解析

1. index.php - 學生列表主頁

<!DOCTYPE html>
<html lang="zh-TW">
<head>
  <meta charset="UTF-8">
  <title>學生資訊管理系統</title>
  <script>
    function doDel(id) {
      if (confirm('確定要刪除這筆資料嗎?')) {
        window.location = 'action.php?action=del&id=' + id;
      }
    }
  </script>
</head>
<body>
  <center>
    <?php include("menu.php"); ?>
    <h3>瀏覽學生資訊</h3>
    <table width="500" border="1" cellpadding="5" cellspacing="0">
      <tr>
        <th>ID</th><th>姓名</th><th>性別</th>
        <th>年齡</th><th>班級</th><th>操作</th>
      </tr>
      <?php
      try {
        $pdo = new PDO("uri:mysqlPdo.ini", "root", "1");
      } catch (PDOException $e) {
        die('資料庫連線失敗: ' . $e->getMessage());
      }
      $sql = "SELECT * FROM stu";
      foreach ($pdo->query($sql) as $row) {
        echo "<tr>";
        echo "<td>{$row['id']}</td>";
        echo "<td>{$row['name']}</td>";
        echo "<td>{$row['sex']}</td>";
        echo "<td>{$row['age']}</td>";
        echo "<td>{$row['classid']}</td>";
        echo "<td>
          <a href='edit.php?id={$row['id']}'>修改</a> |
          <a href='javascript:void(0);' onclick='doDel({$row['id']})'>刪除</a>
        </td>";
        echo "</tr>";
      }
      ?>
    </table>
  </center>
</body>
</html>

2. add.php - 新增學生表單

<!DOCTYPE html>
<html lang="zh-TW">
<head>
  <meta charset="UTF-8">
  <title>新增學生資料</title>
</head>
<body>
  <center>
    <?php include('menu.php'); ?>
    <h3>增加學生資訊</h3>
    <form action="action.php?action=add" method="post">
      <table>
        <tr><td>姓名</td><td><input type="text" name="name" required></td></tr>
        <tr><td>年齡</td><td><input type="number" name="age" min="1" max="100" required></td></tr>
        <tr><td>性別</td><td>
          <input type="radio" name="sex" value="男" required>男
          <input type="radio" name="sex" value="女">女
        </td></tr>
        <tr><td>班級</td><td><input type="text" name="classid" required></td></tr>
        <tr>
          <td><a href="index.php">返回列表</a></td>
          <td><input type="submit" value="確定新增"></td>
          <td><input type="reset" value="重置表單"></td>
        </tr>
      </table>
    </form>
  </center>
</body>
</html>

3. action.php - 統一處理邏輯

<?php
try {
  $pdo = new PDO("uri:mysqlPdo.ini", "root", "1");
} catch (PDOException $e) {
  die('資料庫連線失敗: ' . $e->getMessage());
}

switch ($_GET['action']) {
  case 'add':
    $sql = "INSERT INTO stu (name, sex, age, classid) VALUES (?, ?, ?, ?)";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$_POST['name'], $_POST['sex'], $_POST['age'], $_POST['classid']]);
    break;

  case 'del':
    $sql = "DELETE FROM stu WHERE id = ?";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$_GET['id']]);
    break;

  case 'edit':
    $sql = "UPDATE stu SET name=?, age=?, sex=?, classid=? WHERE id=?";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$_POST['name'], $_POST['age'], $_POST['sex'], $_POST['classid'], $_POST['id']]);
    break;
}
header('Location: index.php');
?>

4. edit.php - 修改學生資料

<!DOCTYPE html>
<html lang="zh-TW">
<head>
  <meta charset="UTF-8">
  <title>修改學生資料</title>
</head>
<body>
  <center>
    <?php
    include('menu.php');
    try {
      $pdo = new PDO("uri:mysqlPdo.ini", "root", "1");
    } catch (PDOException $e) {
      die('連線失敗: ' . $e->getMessage());
    }
    $stmt = $pdo->prepare("SELECT * FROM stu WHERE id = ?");
    $stmt->execute([$_GET['id']]);
    $stu = $stmt->fetch(PDO::FETCH_ASSOC);
    if (!$stu) die("找不到指定學生 ID: {$_GET['id']}");
    ?>
    <h3>修改學生資訊</h3>
    <form action="action.php?action=edit" method="post">
      <input type="hidden" name="id" value="<?php echo $stu['id']; ?>">
      <table>
        <tr><td>姓名</td><td><input type="text" name="name" value="<?php echo $stu['name']; ?>" required></td></tr>
        <tr><td>年齡</td><td><input type="number" name="age" value="<?php echo $stu['age']; ?>" min="1" max="100" required></td></tr>
        <tr><td>性別</td><td>
          <input type="radio" name="sex" value="男" <?php echo $stu['sex']=='男'?'checked':''; ?>>男
          <input type="radio" name="sex" value="女" <?php echo $stu['sex']=='女'?'checked':''; ?>>女
        </td></tr>
        <tr><td>班級</td><td><input type="text" name="classid" value="<?php echo $stu['classid']; ?>" required></td></tr>
        <tr>
          <td></td>
          <td><input type="submit" value="更新資料"></td>
          <td><input type="reset" value="重置"></td>
        </tr>
      </table>
    </form>
  </center>
</body>
</html>

5. menu.php - 共用導航選單

<!DOCTYPE html>
<html lang="zh-TW">
<body>
  <h2>學生管理系統</h2>
  <a href="index.php">瀏覽學生</a> |
  <a href="add.php">新增學生</a>
  <hr>
</body>
</html>

資料庫結構建議

CREATE TABLE `stu` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(50) NOT NULL,
  `sex` ENUM('男','女') NOT NULL,
  `age` TINYINT(3) UNSIGNED NOT NULL,
  `classid` VARCHAR(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

安全性改進建議

  1. 使用 Prepared Statements:原始碼已改用 `prepare()` + `execute()` 防止 SQL Injection
  2. 輸入驗證:表單加入 `required`、數字限制 `min/max`
  3. 錯誤處理:統一使用 try-catch 捕捉 PDO 例外
  4. 敏感資訊外置:資料庫帳密建議寫在 `mysqlPdo.ini` 或環境變數中

總結

這個學生管理系統雖然功能簡單,但涵蓋了 PHP Web 開發的核心概念:表單處理、資料庫操作、頁面跳轉、模組化設計。建議初學者先跑通流程,再嘗試加入分頁、搜尋、匯出 Excel 等進階功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved