php kungfuphp

Hướng dẫn tạo trang quản lý thành viên PHP – cập nhật thông tin user (phần 3)

Ở 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.

chỉnh sửa thành viên

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.phpcác bạn sẽ thấy giao diện như sau :

form thông tin thành viên

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 :

hiển thị thông tin thành viên

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é !

Có ích

tạo form upload trong php

Tạo phân quyền cho website PHP – Tạo website bằng PHP (Phần 8)

Đi qua một loạt 7 phần trong chuỗi seri Tạo website bằng PHP, trong phần …

30 bình luận

  1. 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 ạ

  2. 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

  3. 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 ạ

  4. 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

  5. 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

  6. 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

  7. 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”

  8. 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);

  9. 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ũ

  10. làm sao để chỉ có admin mới sử và xóa tt đc vậy???

  11. Bài viết dễ hiểu, rõ ràng, cảm ơn bạn

  12. 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

  13. 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() ).

  14. 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 ạ?

  15. 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 ạ.

  16. Bài hướng dẫn rất hay, bổ ích. Cảm ơn nỗ lực của bạn nhé

Trả lời Thanh Thiên Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *