Chỉnh sửa bản ghi trong CSDL bằng PHP
Bây giờ hãy cùng triển khai tính năng chỉnh sửa người dùng.
Để làm điều này, chúng ta cần hai trang: trang
edit.php, nơi sẽ chứa
biểu mẫu để chỉnh sửa người dùng, và trang
save.php, nơi biểu mẫu sẽ được gửi đến
để lưu lại sau đó.
Trang chỉnh sửa
Trước hết, trên trang edit.php, hãy tạo
một biểu mẫu:
<form action="" method="POST">
<input name="name">
<input name="age">
<input name="salary">
<input type="submit">
</form>
Chúng ta sẽ tải dữ liệu hiện tại của
người dùng từ cơ sở dữ liệu vào biểu mẫu này.
Giả sử id của người dùng
cần chỉnh sửa được truyền trong tham số
GET:
<?php
$id = $_GET['id'];
?>
Hãy tạo truy vấn để lấy thông tin người dùng:
<?php
$query = "SELECT * FROM users WHERE id=$id";
?>
Thực thi truy vấn:
<?php
$result = mysqli_query($link, $query) or die(mysqli_error($link));
?>
Lấy dữ liệu người dùng vào một biến:
<?php
$user = mysqli_fetch_assoc($result);
?>
Hiển thị dữ liệu này trong biểu mẫu của chúng ta:
<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>
Hãy thay đổi action của biểu mẫu để nó
được gửi đến trang save.php:
<form action="save.php" method="POST">
Đồng thời, chúng ta sẽ truyền
id của người dùng cần chỉnh sửa dưới dạng
tham số GET:
<form action="save.php?id=<?= $_GET['id'] ?>" method="POST">
Trang lưu
Trên trang save.php, hãy nhận dữ liệu
đã gửi:
<?php
$id = $_GET['id'];
$name = $_POST['name'];
$age = $_POST['age'];
$salary = $_POST['salary'];
?>
Tạo truy vấn cập nhật:
<?php
$query = "UPDATE users SET
name='$name', age='$age', salary='$salary'
WHERE id=$id";
?>
Thực thi truy vấn:
<?php
mysqli_query($link, $query) or die(mysqli_error($link));
?>
Hiển thị thông báo về việc thao tác thành công:
<?php
echo 'Người dùng đã được thay đổi thành công!';
?>
Bài tập thực hành
Triển khai trang edit.php để chỉnh sửa
người dùng.
Triển khai trang save.php để lưu
kết quả chỉnh sửa.
Trên trang index.php, hãy hiển thị
danh sách người dùng sao cho với mỗi
người dùng đều có một liên kết để chỉnh sửa họ:
<ul>
<li>user1 <a href="?edit=1">sửa</a></li>
<li>user2 <a href="?edit=2">sửa</a></li>
<li>user3 <a href="?edit=3">sửa</a></li>
</ul>
Triển khai xử lý biểu mẫu trên trang edit.php.