Ở bài viết trước chúng ta đã thực hiện insert dữ liệu từ form vào database trong PHP. Một form nên có chức năng update để người dùng có thể chỉnh sửa thông tin đúng không nào. Trong bài viết này tôi sẽ hướng dẫn các bạn tạo form update trong PHP.
Tạo form update trong PHP
Đầu tiên các bạn cần hiểu rằng một form update sẽ có một URL như thế này:http://vi-magento/post/edit?id=10
và chúng ta sẽ sử dụng biến toàn cục $_GET để lấy được id này.
1 2 3 4 5 6 7 8 9 |
// Lấy data để điền vào form update if (isset($_GET['id'])) { $id = $_GET['id']; $sql = "SELECT * FROM posts WHERE post_id = {$id}"; $exe = mysqli_query($connect, $sql); if ($exe) { $result = mysqli_fetch_assoc($exe); } } |
Các bạn nhớ là phải kiểm tra xem biến có tồn tại hay không trước khi get nhé. Đến đây thì chúng ta đã có dữ liệu rồi tiếp theo sẽ điền dữ liệu này vào form update:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<!DOCTYPE html> <html> <head> <title>Insert dữ liệu từ form vào database trong PHP</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="" method="POST"> <table> <input type="hidden" name="id" value="<?= isset($result['post_id']) ? $result['post_id'] : ''; ?>"> <tr> <th>Tên bài viết:</th> <td><input type="text" name="post_name" value="<?= isset($result['post_name']) ? $result['post_name'] : ''; ?>"></td> </tr> <tr> <th>Tác giả:</th> <td><input type="text" name="author" value="<?= isset($result['author']) ? $result['author'] : ''; ?>"></td> </tr> </table> <button type="submit">Insert</button> </form> </body> </html> |
Ở trên tôi đã tạo form update trong PHP đơn giản. Vì ở đây tôi sử dụng form này cho cả tạo mới và update nên các bạn cần thêm cho mình một ô input type là hidden, ô input này sẽ ẩn đi và có giá trị là ID nếu update. Do đó khi submit form các bạn chỉ cần kiểm tra xem ô input này có dữ liệu hay không. Nếu có tức là update, ngược lại sẽ là tạo mới.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<?php $username = "vimagento"; // Khai báo username $password = "123456"; // Khai báo password $server = "localhost"; // Khai báo server $dbname = "ajax"; // Khai báo database // Kết nối database $connect = new mysqli($server, $username, $password, $dbname); //Nếu kết nối bị lỗi thì xuất báo lỗi và thoát. if ($connect->connect_error) { die("Kết nối lỗi:" . $connect->connect_error); exit(); } //Khai báo giá trị ban đầu, nếu không có thì khi chưa submit câu lệnh insert sẽ báo lỗi $name = ''; $author = ''; $id = ''; $result = ''; //Lấy giá trị POST từ form vừa submit if ($_SERVER["REQUEST_METHOD"] == "POST") { if (isset($_POST["post_name"])) { $name = $_POST['post_name']; } if (isset($_POST["author"])) { $author = $_POST['author']; } if (isset($_POST['id'])) { $id = $_POST['id']; } // Nếu ID có giá trị tức là update if (!empty($id)) { $sql = "UPDATE posts SET post_name='{$name}', author='{$author}' WHERE post_id={$id}"; } else { //insert dữ liệu vào database table $sql = "INSERT INTO posts (post_name, author) VALUES ('{$name}', '{$author}')"; } if ($connect->query($sql) === TRUE) { echo "Thành công"; } else { echo "Error: " . $sql . "<br>" . $connect->error; } } //Đóng database $connect->close(); ?> |
Như các bạn có thể thấy để update dữ liệu trong database chúng ta sử dụng câu lệnh sau:
1 2 3 |
UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value |
Và đây là toàn bộ nội dung của file:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
<?php $username = "vimagento"; // Khai báo username $password = "123456"; // Khai báo password $server = "localhost"; // Khai báo server $dbname = "ajax"; // Khai báo database // Kết nối database $connect = new mysqli($server, $username, $password, $dbname); //Nếu kết nối bị lỗi thì xuất báo lỗi và thoát. if ($connect->connect_error) { die("Kết nối lỗi:" . $connect->connect_error); exit(); } //Khai báo giá trị ban đầu, nếu không có thì khi chưa submit câu lệnh insert sẽ báo lỗi $name = ''; $author = ''; $id = ''; $result = ''; //Lấy giá trị POST từ form vừa submit if ($_SERVER["REQUEST_METHOD"] == "POST") { if (isset($_POST["post_name"])) { $name = $_POST['post_name']; } if (isset($_POST["author"])) { $author = $_POST['author']; } if (isset($_POST['id'])) { $id = $_POST['id']; } // Nếu ID có giá trị tức là update if (!empty($id)) { $sql = "UPDATE posts SET post_name='{$name}', author='{$author}' WHERE post_id={$id}"; } else { //insert dữ liệu vào database table $sql = "INSERT INTO posts (post_name, author) VALUES ('{$name}', '{$author}')"; } if ($connect->query($sql) === TRUE) { echo "Thành công"; } else { echo "Error: " . $sql . "<br>" . $connect->error; } } else { // Lấy data để điền vào form update if (isset($_GET['id'])) { $id = $_GET['id']; $sql = "SELECT * FROM posts WHERE post_id = {$id}"; $exe = mysqli_query($connect, $sql); if ($exe) { $result = mysqli_fetch_assoc($exe); } } } //Đóng database $connect->close(); ?> <!DOCTYPE html> <html> <head> <title>Insert dữ liệu từ form vào database trong PHP</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="" method="POST"> <table> <input type="hidden" name="id" value="<?= isset($result['post_id']) ? $result['post_id'] : ''; ?>"> <tr> <th>Tên bài viết:</th> <td><input type="text" name="post_name" value="<?= isset($result['post_name']) ? $result['post_name'] : ''; ?>"></td> </tr> <tr> <th>Tác giả:</th> <td><input type="text" name="author" value="<?= isset($result['author']) ? $result['author'] : ''; ?>"></td> </tr> </table> <button type="submit">Insert</button> </form> </body> </html> |
Hiển thị thông báo và điều hướng sang trang khác sau khi update thành công
Sau khi tạo form update trong PHP và update thành công, chúng ta cần điều hướng đến một URL thích hợp, ở đây có thể là một trang để hiển thị danh sách các record trong database và hiển thị thông báo thành công sau khi điều hướng. Điều này dường như là bắt buộc khi bạn làm một ứng dụng web. Sau khi cập nhật thành công thì nên hiển thị thông báo để người dùng biết là hành động của họ đã thành công hay chưa, và điều hướng đến trang hiển thị danh sách dữ liệu nếu cần thiết.
Bạn có thể sử dụng Header() và truyền vào URL mà bạn muốn điều hướng đến sau khi update thành công.
1 2 3 4 5 |
if ($connect->query($sql) === TRUE) { Header( 'Location: index.php?success=1' ); } else { echo "Error: " . $sql . "<br>" . $connect->error; } |
Và ở đầu file index.php hãy thêm đoạn code sau:
1 2 3 4 |
if ( isset($_GET['success']) && $_GET['success'] == 1 ) { echo "Success"; } |
Kết luận
Trong bài viết này mình đã hướng dẫn các bạn cách để tạo form update trong PHP. Bài viết tiếp theo chúng ta sẽ tìm hiểu về các xóa dữ liệu trong PHP.