Ở bài trước, chúng ta đã dừng lại ở việc hiển thị dữ liệu danh sách thành viên có trong cơ sở dữ liệu ra ngoài dưới dạng bảng. Trong bài viết này, mình sẽ tiếp tục hướng dẫn các bạn bổ sung thêm chức năng cập nhật thông tin thành viên.
Review lại mục 3 ở bài viết trước , trên mỗi dòng của table, cột hành động, chúng ta có các chức năng là Sửa
<td> <a href="chinh-sua-thanh-vien.php?id=<?php echo $data["id"]; ?>">Sửa</a> </td>
Khi người dùng click link này, người quản trị sẽ được chuyển hướng tới các trang chinh-sua-thanh-vien.php , trong trang này chúng ta sẽ viết các đoạn mã làm nhiệm vụ sửa các thông tin của user như là họ tên, địa chỉ email, quyền và lưu xuống cơ sở dữ liệu.
3. Tạo trang quản lý thành viên
a. Trang sửa thông tin thành viên
Tạo file chinh-sua-thanh-vien.php, đặt trong thư mục admin.
Trong trang này, chúng ta sẽ dùng phương thức $_GET để lấy biến id của người dùng truyền qua từ bên trang quan-ly-thanh-vien.php, sau đó thực hiện việc gọi vào cơ sở dữ liệu, thông qua biến id để truy vấn toàn bộ thông tin người dùng lên để quản trị viên có thể xem được thông tin người dùng, đồng thời tiến hành cập nhật khi quản trị viên chỉnh sửa một thông tin nào đó.
Bước 1 : Tạo form hiển thị thông tin
Trong file quan-ly-thanh-vien.php, gõ đoạn code như bên dưới để thiết kế một form dùng để hiển thị thông tin thành viên với các field họ tên, địa chỉ email, cấp độ và một button để lưu thông tin xuống cơ sở dữ liệu.
<html lang="en"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Thông tin thành viên</title> <!-- Bootstrap core CSS --> <link href="../bootstrap/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"> <div class="row"> <h3> Thông tin thành viên</h3> <form method="POST" name="fr_update"> <table class="table"> <caption>Danh sách thành viên đã đăng ký</caption> <input type="hidden" name="id_user" value=""> <tr><td>Họ tên : </td><td><input type="text" name="name" /></td></tr> <tr><td>Địa chỉ email : </td><td><input type="text" name="email" /></td></tr> <tr> <td>Cấp độ : </td> <td> <select name="level"> <option value="1">Administrator</option> <option value="2">Member</option> </select> </td> </tr> <tr><td colspan="2"><input type="submit" name="save" value="Lưu thông tin"></td></tr> </table> </form> </div> </div><!-- /.container --> <!-- Bootstrap core JavaScript ================================================== --> <!-- Placed at the end of the document so the pages load faster --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <script src="../bootstrap/js/bootstrap.min.js"></script> </body></html>
Vào http://localhost/my_website/admin/chinh-sua-thanh-vien.php, các bạn sẽ thấy giao diện như sau :
Vậy là chúng ta đã thiết kế xong giao diện hiển thị thông tin.
Bước 2 : thực hiện truy vấn, hiển thị thông tin
Như những lần trước, để gọi vào cơ sở dữ liệu, ta phải require_one trang connection.php vào
<?php require_once("../lib/connection.php"); ?>
tiếp đến, lấy tham số id được truyền tới bằng biến $_GET và kiểm tra xem biến có tồn tại hay không bằng từ khóa isset (nếu tồn tại sẽ trả về true, ngược lại sẽ trả về false). Nếu tồn tại biến id, ta sẽ thực thi việc lấy thông tin thành viên thông qua biến id đó.
<?php require_once("../lib/connection.php"); if (isset($_GET["id"])) { //thực hiện việc lấy thông tin user } ?>
Sau khi đã lấy thông tin user, ta sẽ truy vấn dữ liệu và hiển thị dữ liệu
Gợi ý : Bạn là người mới và muốn tìm hiểu về Bitcoin nhưng không biết bắt đầu từ đâu? Click xem ngay Hướng Dẫn Đầu Tư Bitcoin Cho Người Mới nhé!
<html lang="en"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Thông tin thành viên</title> <!-- Bootstrap core CSS --> <link href="../bootstrap/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"> <div class="row"> <?php require_once("../lib/connection.php"); $id = ""; $name = ""; $email = ""; $level = ""; if (isset($_GET["id"])) { //thực hiện việc lấy thông tin user $id = $_GET["id"]; $sql = "select * from users where id = $id"; $query = mysqli_query($conn, $sql); while ( $data = mysqli_fetch_array($query) ) { $name = $data["name"]; $email = $data["email"]; $level = $data["level"]; } } ?> <h3> Thông tin thành viên</h3> <form method="POST" name="fr_update"> <table class="table"> <caption>Danh sách thành viên đã đăng ký</caption> <input type="hidden" name="id_user" value="<?php echo $id; ?>"> <tr><td>Họ tên : </td><td><input type="text" name="name" value="<?php echo $name; ?>" /></td></tr> <tr><td>Địa chỉ email : </td><td><input type="text" name="email" value="<?php echo $email; ?>"/></td></tr> <tr> <td>Cấp độ : </td> <td> <select name="level"> <option value="1" <?php echo ($level == 1)?"selected":""; ?>>Administrator</option> <option value="2" <?php echo ($level == 2)?"selected":""; ?>>Member</option> </select> </td> </tr> <tr><td colspan="2"><input type="submit" name="save" value="Lưu thông tin"></td></tr> </table> </form> </div> </div><!-- /.container --> <!-- Bootstrap core JavaScript ================================================== --> <!-- Placed at the end of the document so the pages load faster --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <script src="../bootstrap/js/bootstrap.min.js"></script> </body></html>
Ở đoạn code trên, sau khi đã truy vấn các thông tin trong cơ sở dữ liệu như name, email, level. Ta sẽ tiến hành gửi các giá trị này vào thuộc tính value của các thẻ <input> để hiển thị thông tin ứng với mỗi field. Các bạn lưu ý đoạn code
<?php echo ($level == 1)?"selected":""; ?>
đây chỉ đơn giản là cách viết tắt của đoạn code sau :
<?php if($level == 1){ echo "selected"; }else{ echo ""; } ?>
để hiểu rõ hơn, các bạn có thể lên google, gõ từ khóa “PHP Shorthand If / Else” để đọc nhé. Mục đích của đoạn code trên là mình sẽ kiểm tra nếu mà dữ liệu level bằng 1 thì sẽ ép dropdown hiển thị tùy chọn là Administrator, ngược lại nếu bằng 2 sẽ là Member
Lưu lại toàn bộ code đã thay đổi, chạy link http://localhost/my_website/admin/chinh-sua-thanh-vien.php?id=1 (với id là tham số truyền từ trang quan-ly-thanh-vien.php), các bạn sẽ được kết quả như sau :
Tiếp đến, chúng ta sẽ tiếp tục xử lý nút Lưu thông tin để lưu thông tin người dùng khi quản trị viên thay đổi bất kỳ 1 thông tin nào đó.
if (isset($_POST["save"])) { $id_user = $_POST["id_user"]; $name = $_POST["name"]; $email = $_POST["email"]; $level = $_POST["level"]; $sql = "update users set name = '$name', email = '$email', level = '$level' where id = $id_user"; mysqli_query($conn, $sql); }
Toàn bộ code cho trang chinh-sua-thanh-vien.php
<html lang="en"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Thông tin thành viên</title> <!-- Bootstrap core CSS --> <link href="../bootstrap/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"> <div class="row"> <?php require_once("../lib/connection.php"); if (isset($_POST["save"])) { $id_user = $_POST["id_user"]; $name = $_POST["name"]; $email = $_POST["email"]; $level = $_POST["level"]; $sql = "update users set name = '$name', email = '$email', level = '$level' where id = $id_user"; mysqli_query($conn, $sql); } $id = ""; $name = ""; $email = ""; $level = ""; if (isset($_GET["id"])) { //thực hiện việc lấy thông tin user $id = $_GET["id"]; $sql = "select * from users where id = $id"; $query = mysqli_query($conn, $sql); while ( $data = mysqli_fetch_array($query) ) { $name = $data["name"]; $email = $data["email"]; $level = $data["level"]; } } ?> <h3> Thông tin thành viên</h3> <form method="POST" name="fr_update"> <table class="table"> <caption>Danh sách thành viên đã đăng ký</caption> <input type="hidden" name="id_user" value="<?php echo $id; ?>"> <tr><td>Họ tên : </td><td><input type="text" name="name" value="<?php echo $name; ?>" /></td></tr> <tr><td>Địa chỉ email : </td><td><input type="text" name="email" value="<?php echo $email; ?>"/></td></tr> <tr> <td>Cấp độ : </td> <td> <select name="level"> <option value="1" <?php echo ($level == 1)?"selected":""; ?>>Administrator</option> <option value="2" <?php echo ($level == 2)?"selected":""; ?>>Member</option> </select> </td> </tr> <tr><td colspan="2"><input type="submit" name="save" value="Lưu thông tin"></td></tr> </table> </form> </div> </div><!-- /.container --> <!-- Bootstrap core JavaScript ================================================== --> <!-- Placed at the end of the document so the pages load faster --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <script src="../bootstrap/js/bootstrap.min.js"></script> </body></html>
Trong bài tiếp theo, chúng ta sẽ tiếp tục làm tiếp chức năng xóa user ra khỏi hệ thống. Đến đây nếu bạn có bất kỳ thắc mắc nào thì để lại comment bên dưới nhé !
a ơi, cho em hỏi xíu, sao em tạo 1 file dùng để chỉnh sửa dữ liệu lúc chạy cục bộ bằng xampp thì chỉnh sửa xong lưu lại thì ok, nhưng lên hosting thì không lưu lại dữ liệu chỉnh sửa đc, mặc dù không thấy báo lỗi gì. anh biết chỉ giúp em với. em cám ơn nhiều ạ
lên host lưu thì thường là có thể không tương thích hoặc kết nối chưa đúng, e thử echo để debug ngay đoạn code lưu xem nó lưu được không
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in C:\xampp\htdocs\web\www\XayDungWeb\Functions\San_pham\noi_bat.php on line 6
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\web\www\XayDungWeb\Functions\San_pham\noi_bat.php on line 7
la loi gì các bác
lỗi này là câu query bị sai, bạn echo câu query ra và kiểm tra câu query xem có đúng chưa nhé
Thầy cho em hỏi, tại sao khi lập trình như thầy,máy lại báo lỗi:
Warning
: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in
C:\xampp\htdocs\PC\admin\edit_infor.php
on line 37
Đồng thời, kết quả không thay đổi gì cả vậy ạ
Lỗi này là do câu query bị sai cú pháp, e dùng lệnh echo câu query ra, rồi check xem câu query có đúng chưa
Tại sao lấy được tham số id bang phương thức GET vậy ad. Trang Quản lý thành viên đâu có form nào phương thức là GET đâu. Và chỗ đoạn này “<a href="chinh-sua-thanh-vien.php?id=”>Sửa” của trang quản lý thành viên là sao ad. Giúp em với. Cảm ơn ad nhiều
Bên trang quản lý thành viên, có nút Sửa, khi ấn nút này nó sẽ truyền id qua, và bạn có thể lấy bằng phương thức GET
Còn cách nào lấy ID được nữa không ad tại thông thường en đăng nhập bằng mã sing viên và mật khẩu sau đó nó tự động chuyển trang bằng header(“Location:file.php”) ấy ạ nên nó qua thẳng luôn cho nên em không biết cách nào để truyền ID qua nữa nên mong ad có cách ạ
e lưu id vào $_SESSION nhé, qua bên kia sẽ sử khởi tạo session_start() và lấy thông tin ra từ $_SESSION
mình làm theo hướng dẫn nhưng iưu thông tin lại thì nó không sửa nội dung được . không báo lỗi mà cũng có cả câu lệnh thực thi mysqli_query($conn, $sql) nhưng ko update được
Echo câu query đó ra và gửi lên dây mình xem thử
Lúc insert em thấy hiển thị ở web là tiếng việt , nhưng trong database nó bị lỗi font .Fix thế nào vậy anh
Web hiện thị được tiếng việt là ok rồi bạn, ko cần quan tâm trong DB ntn nhé
Ad ơi cho mình hỏi, làm sao để sau khi ấn Lưu thông tin thì trang báo Lưu thành công và tự chuyển về trang “quan-ly-thanh-vien.php”
Khi lưu xong, bạn echo “Lưu thành công”, tiếp đến dùng hàm Header(“Location quan-ly-thanh-vien.php”) để chuyển trang nhé
bạn đó nhấn ko báo lỗi mà ko có tài khoản trong database có thể là do ko bỏ lệnh thực thi câu sql á. mysqli_query($conn, $sql);
Bạn ơi 🙂
sao mình làm theo hướng dẫn của bạn khi mình ấn cập nhật thì chẳng thấy thông tin nào được cập nhật cả 🙂
Mình check trong phpmyadmin vẫn như cũ
Có thông báo lỗi gì ko bạn ?
làm sao để chỉ có admin mới sử và xóa tt đc vậy???
Bài viết dễ hiểu, rõ ràng, cảm ơn bạn
Chào bạn !
Bài hướng dẫn của bạn rất hay , nhưng khi mình theo hướng dẫn của bạn khi xay dựng xong thì có lỗi :
Warning: Cannot modify header information – headers already sent by (output started at D:\LUU\AppServ\www\my_website\login.php:10) in D:\LUU\AppServ\www\my_website\login.php on line 37
Bạn hướng dẫn xử lý lỗi này .
Cảm ơn bạn
vay thanh vien dang ky xong muon xem lai thong tin da dang ky thi lam nhu the nao
Điều này cũng ko cần thiết cho lắm! có thể sử dụng trang chuyển hướng khi đăng ký thành công – tới trang kết quả sẽ in ra dữ liệu vừa đăng ký ( theo id của user, lấy id user vừa đăng ký bằng hàm mysqli_insert_id() hoặc mysql_insert_id() ).
Ad ơi,ad cho em hỏi,sau khi người dùng đăng kí tài khoản của mình xong,chỉ cần nhấn vào nút đăng kí là có thể chuyển đến trang thông báo thành công hay rồi chuyển tiếp đến trang muốn đến thì làm thế nào ạ?
Ad ơi,bài này e làm nhưng phần stt chỉ ra toàn là 1 k tự động tăng được ạ.
Vậy là có thể e đã quên tăng 1 cho stt sau mỗi vòng lặp rồi. Chỗ này nè : $stt++ , e kiểm tra lại xem
Dạ vâng ạ.. E cảm ơn ad ạ.À,ad cho em hỏi,trang quản lí mình có phải cho hiển thị lên trang web k ạ? Bọn e đang làm bài tập về đề tài quản lí phòng và đặt phòng khách sạn ạ..vì lần đầu tiên làm nên cô k yêu cầu cao và em định làm trang quản lí phòng,quản lí khách hàng và quản lí đặt phòng,khi mà khách hàng đặt phòng nếu thành công thì sẽ thông báo thông tin phòng cho khách hàng,nếu không sẽ thông báo hết phòng mà khách hàng yêu cầu,có thể gợi ý cho khách hàng loại phòng khác ạ.
Bài hướng dẫn rất hay, bổ ích. Cảm ơn nỗ lực của bạn nhé
cám ơn bạn, chúc bạn học tốt nhé, mình đang biên soạn và chuẩn bị cho ra nhiều bài viết có ích hơn nữa, bạn chờ xem nhé, chúc bạn học tốt 🙂