การแก้ไขข้อมูลในฐานข้อมูลด้วย PHP

ตอนนี้เรามาลงมือทำการแก้ไขข้อมูลผู้ใช้กัน สำหรับสิ่งนี้ เราจำเป็นต้องมีสองหน้า: หน้า edit.php ซึ่งจะมี แบบฟอร์มสำหรับแก้ไขข้อมูลผู้ใช้ และหน้า save.php ซึ่งแบบฟอร์มจะถูกส่งมา เพื่อทำการบันทึกต่อไป

หน้าดำเนินการแก้ไข

เริ่มต้นที่หน้า edit.php เรามาสร้าง แบบฟอร์มกัน:

edit.php<form action="" method="POST">
  <input name="name">
  <input name="age">
  <input name="salary">
  <input type="submit">
</form>

เราโหลดข้อมูลปัจจุบันของ ผู้ใช้จากฐานข้อมูลลงในแบบฟอร์มนี้ ให้ id ของผู้ใช้ สำหรับการแก้ไขถูกส่งผ่าน GET parameter:

edit.php<?php
  $id = $_GET['id'];
?>

เรามาสร้าง query สำหรับดึงข้อมูลผู้ใช้:

edit.php<?php
  $query = "SELECT * FROM users WHERE id=$id";
?>

ทำการ execute query:

edit.php<?php
  $result = mysqli_query($link, $query) or die(mysqli_error($link));
?>

รับข้อมูลผู้ใช้มาเก็บในตัวแปร:

edit.php<?php
  $user = mysqli_fetch_assoc($result);
?>

แสดงข้อมูลเหล่านี้ในแบบฟอร์มของเรา:

edit.php<form method="POST">
  <input name="name" value="<?= $user['name'] ?>">
  <input name="age" value="<?= $user['age'] ?>">
  <input name="salary" value="<?= $user['salary'] ?>">
  <input type="submit">
</form>

เปลี่ยน action ของแบบฟอร์มเพื่อให้มัน ถูกส่งไปยังหน้า save.php:

html<form action="save.php" method="POST">

โดยส่ง id ของผู้ใช้สำหรับแก้ไขเป็น GET parameter:

html<form action="save.php?id=<?= $_GET['id'] ?>" method="POST">

หน้าบันทึกข้อมูล

ที่หน้า save.php รับข้อมูลที่ส่งมา:

html<?php
  $id = $_GET['id'];
  $name = $_POST['name'];
  $age = $_POST['age'];
  $salary = $_POST['salary'];
?>

สร้าง query สำหรับการอัพเดต:

html<?php
  $query = "UPDATE users SET
    name='$name', age='$age', salary='$salary'
  WHERE id=$id";
?>

ทำการ execute query:

html<?php
  mysqli_query($link, $query) or die(mysqli_error($link));
?>

แสดงข้อความแจ้งว่าการดำเนินการสำเร็จ:

html<?php
  echo 'แก้ไขข้อมูลผู้ใช้เรียบร้อยแล้ว!';
?>

งานปฏิบัติ

Задание 1

สร้างหน้า edit.php สำหรับแก้ไข ข้อมูลผู้ใช้

Задание 2

สร้างหน้า save.php สำหรับบันทึก ผลลัพธ์ของการแก้ไข

Задание 3

ที่หน้า index.php แสดง รายการผู้ users ออกมา โดยสำหรับแต่ละ user ให้มีลิงก์สำหรับแก้ไขข้อมูลของเขา:

html<ul>
  <li>user1 <a href="?edit=1">แก้ไข</a></li>
  <li>user2 <a href="?edit=2">แก้ไข</a></li>
  <li>user3 <a href="?edit=3">แก้ไข</a></li>
</ul>
Задание 4

จัดการการส่งแบบฟอร์มที่หน้า edit.php