สร้างระบบจัดการข้อมูลไร้รอยต่อ: คู่มือ PHP & MySQL สู่การทำระบบกรอกคะแนนและ CRUD

ระบบจัดการข้อมูลพื้นฐานเป็นหัวใจสำคัญของเว็บแอปพลิเคชันทุกชนิด ไม่ว่าจะเป็นระบบกรอกคะแนนนักเรียน, ระบบจัดการสต็อกสินค้า, หรือสมุดโทรศัพท์ออนไลน์ แก่นหลักของการพัฒนาระบบเหล่านี้คือการทำงานแบบ CRUD (Create, Read, Update, Delete) ซึ่งบทความนี้จะเจาะลึกวิธีการใช้ PHP เป็นภาษาหลักในการเชื่อมต่อและจัดการข้อมูลใน MySQL ให้คุณสามารถสร้างระบบที่ใช้งานได้จริง

1. องค์ประกอบหลักของระบบ CRUD (Create, Read, Update, Delete)

ระบบจัดการข้อมูลใด ๆ ต้องรองรับฟังก์ชันพื้นฐาน 4 อย่างนี้ โดย PHP และ MySQL เป็นคู่หูที่สมบูรณ์แบบในการทำให้ฟังก์ชันเหล่านี้เกิดขึ้น:

ฟังก์ชันการทำงานคำสั่ง SQL หลักส่วนประกอบ PHP/HTML
Create (เพิ่ม)การเพิ่มข้อมูลใหม่เข้าไปในตาราง (เช่น เพิ่มวิชาและคะแนนใหม่)INSERT INTOแบบฟอร์ม HTML (<form>), ไฟล์ PHP สำหรับรับค่า ($_POST)
Read (อ่าน)การดึงข้อมูลที่มีอยู่มาแสดงผล (เช่น แสดงตารางคะแนนทั้งหมด)SELECT * FROMไฟล์ PHP สำหรับ Query และวนลูปแสดงผล (while หรือ foreach)
Update (แก้ไข)การเปลี่ยนแปลงข้อมูลที่มีอยู่ (เช่น แก้ไขคะแนนที่กรอกผิด)UPDATE ... SET ... WHEREแบบฟอร์ม HTML ที่มีค่าเดิม, ไฟล์ PHP สำหรับรับค่าและรัน Query
Delete (ลบ)การลบข้อมูลออกจากตารางอย่างถาวร (เช่น ลบข้อมูลวิชาที่ไม่เกี่ยวข้อง)DELETE FROM ... WHEREปุ่มลบ (Delete button), ไฟล์ PHP สำหรับรัน Query (มักมีการยืนยันก่อน)

2. การเตรียมฐานข้อมูล: หัวใจของระบบกรอกคะแนน

ก่อนเขียนโค้ด PHP เราต้องสร้างโครงสร้างฐานข้อมูลใน MySQL (ผ่าน phpMyAdmin หรือเครื่องมืออื่น ๆ) โดยตัวอย่างตารางสำหรับระบบกรอกคะแนนอาจมีโครงสร้างดังนี้:

Field (ชื่อคอลัมน์)Data Typeคำอธิบาย
idINT (Primary Key, Auto Increment)รหัสอ้างอิงของแถวข้อมูล (ห้ามซ้ำ)
student_idVARCHARรหัสนักเรียน
subject_nameVARCHARชื่อวิชา (เช่น คณิตศาสตร์)
scoreINTคะแนนที่ได้
date_recordedDATETIMEวันที่บันทึกคะแนน

คำสั่ง SQL สำหรับสร้างตาราง (ตัวอย่าง):

SQL

CREATE TABLE scores (
    id INT(11) PRIMARY KEY AUTO_INCREMENT,
    student_id VARCHAR(10) NOT NULL,
    subject_name VARCHAR(100) NOT NULL,
    score INT(3) NOT NULL,
    date_recorded DATETIME NOT NULL
);

3. การเขียนโค้ด PHP: เชื่อมต่อและจัดการ (Integration)

การเชื่อมต่อ PHP กับ MySQL ในปัจจุบันควรใช้ส่วนขยาย PDO (PHP Data Objects) หรือ MySQLi เนื่องจากมีความปลอดภัยและประสิทธิภาพสูงกว่าฟังก์ชัน mysql_* แบบเก่า

ขั้นตอนที่ 1: ไฟล์เชื่อมต่อฐานข้อมูล (db_connect.php)

ไฟล์นี้จะทำหน้าที่สร้างการเชื่อมต่อกับฐานข้อมูล โดยใช้รูปแบบ PDO ที่มีความปลอดภัยสูงกว่า:

PHP

<?php
$host = 'localhost'; // หรือ IP Address ของฐานข้อมูล
$dbname = 'your_database_name';
$username = 'your_mysql_username';
$password = 'your_mysql_password';

try {
    $conn = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // echo "Connection successful"; // ใช้สำหรับทดสอบ
} catch(PDOException $e) {
    die("Connection failed: " . $e->getMessage());
}
?>

ขั้นตอนที่ 2: การเพิ่มข้อมูล (Create)

  1. สร้างไฟล์ HTML Form เพื่อรับค่า (student_id, subject_name, score)
  2. ไฟล์ PHP รับค่าจากฟอร์ม ($_POST) และใช้ Prepared Statements เพื่อป้องกัน SQL Injection:

PHP

<?php
// ... นำเข้าไฟล์ db_connect.php ...

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $student_id = $_POST['student_id'];
    $subject_name = $_POST['subject_name'];
    $score = $_POST['score'];

    $sql = "INSERT INTO scores (student_id, subject_name, score, date_recorded) 
            VALUES (:sid, :sname, :score, NOW())";
    
    $stmt = $conn->prepare($sql);
    $stmt->bindParam(':sid', $student_id);
    $stmt->bindParam(':sname', $subject_name);
    $stmt->bindParam(':score', $score);

    if ($stmt->execute()) {
        echo "บันทึกคะแนนสำเร็จ!";
    } else {
        echo "เกิดข้อผิดพลาดในการบันทึก";
    }
}
?>

ขั้นตอนที่ 3: การแสดงข้อมูล (Read)

ไฟล์นี้จะดึงคะแนนทั้งหมดมาแสดงในรูปแบบตาราง:

PHP

<?php
// ... นำเข้าไฟล์ db_connect.php ...

$stmt = $conn->prepare("SELECT * FROM scores ORDER BY date_recorded DESC");
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

echo "<table>";
echo "<tr><th>รหัสนักเรียน</th><th>วิชา</th><th>คะแนน</th><th>วันที่บันทึก</th></tr>";

foreach ($results as $row) {
    echo "<tr>";
    echo "<td>" . htmlspecialchars($row['student_id']) . "</td>";
    echo "<td>" . htmlspecialchars($row['subject_name']) . "</td>";
    echo "<td>" . htmlspecialchars($row['score']) . "</td>";
    echo "<td>" . $row['date_recorded'] . "</td>";
    // เพิ่มปุ่มแก้ไข/ลบในส่วนนี้
    echo "</tr>";
}
echo "</table>";
?>

สรุป: ก้าวต่อไปสำหรับระบบจัดการข้อมูล

การทำระบบกรอกคะแนนด้วย PHP & MySQL เป็นตัวอย่างที่ยอดเยี่ยมสำหรับการฝึกฝนการทำ CRUD เมื่อเข้าใจหลักการพื้นฐานแล้ว คุณสามารถต่อยอดได้อีกมาก เช่น:

  • การจัดการฟอร์ม: ใช้ Bootstrap เพื่อออกแบบฟอร์มและตารางให้สวยงามและ Responsive
  • ความปลอดภัย: เพิ่มการตรวจสอบความถูกต้องของข้อมูล (Validation) และใช้ Prepared Statements เสมอ
  • การใช้งานร่วมกับ JavaScript: ใช้ AJAX และ JavaScript/jQuery เพื่อเพิ่ม, ลบ, แก้ไขข้อมูล โดยไม่ต้องโหลดหน้าเว็บใหม่ทั้งหมด (เพื่อประสบการณ์ใช้งานที่รวดเร็ว)
Scroll to Top