การแก้ไขข้อมูลในฐานข้อมูลด้วย PHP
ตอนนี้เรามาลงมือทำการแก้ไขข้อมูลผู้ใช้กัน
สำหรับสิ่งนี้ เราจำเป็นต้องมีสองหน้า: หน้า
edit.php ซึ่งจะมี
แบบฟอร์มสำหรับแก้ไขข้อมูลผู้ใช้ และหน้า
save.php ซึ่งแบบฟอร์มจะถูกส่งมา
เพื่อทำการบันทึกต่อไป
หน้าดำเนินการแก้ไข
เริ่มต้นที่หน้า edit.php เรามาสร้าง
แบบฟอร์มกัน:
<form action="" method="POST">
<input name="name">
<input name="age">
<input name="salary">
<input type="submit">
</form>
เราโหลดข้อมูลปัจจุบันของ
ผู้ใช้จากฐานข้อมูลลงในแบบฟอร์มนี้ ให้ id ของผู้ใช้
สำหรับการแก้ไขถูกส่งผ่าน GET
parameter:
<?php
$id = $_GET['id'];
?>
เรามาสร้าง query สำหรับดึงข้อมูลผู้ใช้:
<?php
$query = "SELECT * FROM users WHERE id=$id";
?>
ทำการ execute query:
<?php
$result = mysqli_query($link, $query) or die(mysqli_error($link));
?>
รับข้อมูลผู้ใช้มาเก็บในตัวแปร:
<?php
$user = mysqli_fetch_assoc($result);
?>
แสดงข้อมูลเหล่านี้ในแบบฟอร์มของเรา:
<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:
<form action="save.php" method="POST">
โดยส่ง id ของผู้ใช้สำหรับแก้ไขเป็น
GET parameter:
<form action="save.php?id=<?= $_GET['id'] ?>" method="POST">
หน้าบันทึกข้อมูล
ที่หน้า save.php รับข้อมูลที่ส่งมา:
<?php
$id = $_GET['id'];
$name = $_POST['name'];
$age = $_POST['age'];
$salary = $_POST['salary'];
?>
สร้าง query สำหรับการอัพเดต:
<?php
$query = "UPDATE users SET
name='$name', age='$age', salary='$salary'
WHERE id=$id";
?>
ทำการ execute query:
<?php
mysqli_query($link, $query) or die(mysqli_error($link));
?>
แสดงข้อความแจ้งว่าการดำเนินการสำเร็จ:
<?php
echo 'แก้ไขข้อมูลผู้ใช้เรียบร้อยแล้ว!';
?>
งานปฏิบัติ
สร้างหน้า edit.php สำหรับแก้ไข
ข้อมูลผู้ใช้
สร้างหน้า save.php สำหรับบันทึก
ผลลัพธ์ของการแก้ไข
ที่หน้า index.php แสดง
รายการผู้ users ออกมา โดยสำหรับแต่ละ
user ให้มีลิงก์สำหรับแก้ไขข้อมูลของเขา:
<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>
จัดการการส่งแบบฟอร์มที่หน้า edit.php