สวัสดีครับนักเรียน ถ้าเปรียบฐานข้อมูลเป็นสมุดบันทึก ตอนที่ 3 เรา “เขียนข้อมูลลงสมุด” ตอนที่ 4 เรา “เปิดอ่านข้อมูล” มาถึงตอนนี้เราจะทำสิ่งที่ยากขึ้นอีกขั้น คือ “แก้ข้อความที่เคยเขียนไปแล้ว”
หัวใจสำคัญคือคำถามว่า / เราจะรู้ได้อย่างไรว่า “ต้องแก้แถวไหน?” คำตอบคือการส่งค่า ID ติดไปกับลิงก์นั่นเองครับ
$_GET รับค่า IDUPDATEจากไฟล์ display_users.php เราต้องสร้างลิงก์ที่พก ID ไปด้วย
// ภายใน while loop
echo "<td>
<a href='edit_user.php?id=".$row['id']."'>
แก้ไข</a>
</td>";
ผลลัพธ์จะได้ URL ประมาณนี้
edit_user.php?id=5
> นี่แหละครับที่เรียกว่า Query String PHP จะรับค่าผ่าน $_GET['id']
หน้านี้ทำ 2 หน้าที่ในไฟล์เดียว
<?php
require_once 'db_config.php';
// --- ส่วนที่ 1 รับค่า ID ---
$id = $_GET['id'];
// --- ส่วนที่ 2 ดึงข้อมูลเดิม ---
$sql = "SELECT * FROM users WHERE id = $id";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);
// --- ส่วนที่ 3 เมื่อกดบันทึก ---
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$new_user = mysqli_real_escape_string($conn, $_POST['username']);
$new_email = mysqli_real_escape_string($conn, $_POST['email']);
$sql_update =
"UPDATE users
SET username='$new_user',
email='$new_email'
WHERE id=$id";
if (mysqli_query($conn, $sql_update)) {
echo "<script>
alert('แก้ไขข้อมูลเรียบร้อย!');
window.location='display_users.php';
</script>";
}
}
?>
<form method="POST">
ชื่อผู้ใช้:
<input type="text" name="username"
value="<?php echo $row['username']; ?>">
อีเมล:
<input type="email" name="email"
value="<?php echo $row['email']; ?>">
<button type="submit">ยืนยันการแก้ไข</button>
</form>
รูปแบบมาตรฐานคือ
UPDATE ตาราง
SET คอลัมน์ = ค่าใหม่
WHERE เงื่อนไข
คำเตือนที่ครูย้ำทุกเทอม
ลืม WHERE = หายนะ! ข้อมูลทั้งตารางจะถูกเปลี่ยนเหมือนกันหมดทันที
ครูเห็นนักเรียนมาเยอะเพราะ 4 ข้อนี้
is_numeric($id)updated_atตอนนี้ระบบของเราเกือบครบแล้ว
เหลือด่านสุดท้ายของ CRUD คือ การลบข้อมูล (DELETE)
ตอนที่ 6: การลบข้อมูล (Delete) และการยืนยันก่อนลบด้วย JavaScript
- ลบอย่างปลอดภัย - ยืนยันก่อนลบ - ป้องกันการกดผิด
ใครมาถึงตรงนี้ได้ ครูขอชมเลยว่า “เก่งมาก” อีกก้าวเดียวก็พร้อมทำโปรเจกต์จบแล้วครับ!