Bài viết ngày hôm nay, mình sẽ hướng dẫn các bạn tạo trang chỉnh sửa thông tin thành viên khi chúng ta nhấn vào nút Sửa ở trang quản lý danh sách thành viên mà chúng ta đã hoàn thành xong ở bài hôm trước.

1. Quy trình tạo trang chỉnh sửa thông tin thành viên

Trong trang hiển thị danh sách thành viên, chúng ta đã tạo ra một cột gọi là Hành động, bên trong cột này sẽ chứa 2 liên kết có chức năng chỉnh sửa thông tin thành viên và xóa thành viên.

Các bạn để ý ở đoạn code chỉnh sửa thông tin thành viên mà bài hôm trước chúng ta đã tạo ra như sau

<a href="chinh-sua-thanh-vien.php?id=<?php echo $id;?>">Sửa</a>

Đây là liên kết mà khi ấn vào, nó sẽ có nhiệm vụ chuyển chúng ta đến trang chinh-sua-thanh-vien.php kèm theo tham số là id (mã id của người dùng bên trong bảng users).

Tại trang chinh-sua-thanh-vien.php chúng ta sẽ có nhiệm vụ bắt lấy tham số id truyền đi này và thực hiện việc truy vấn và hiển thị thông tin người dùng lên form đinh sẵn và cho phép thực hiện thao tác chỉnh sửa thông tin và lưu thông tin đã chỉnh sửa xuống cơ sở dữ liệu.

2. Tiến hành tạo trang chỉnh sửa thông tin thành viên

a. Thiết kế form hiển thị dữ liệu

Ở trang chỉnh sửa thông tin thành viên, chúng ta sẽ thiết kế form bao gồm

  1. Input hidden (ẩn) : Chứa mã id của user
  2. Input name : Chứa thông tin họ tên của user
  3. Dropdown permission : Chứa danh sách quyền của thành viên
  4. Checkbox is_block : Hiển thị thành viên đó đã bị khóa hay không

Bên trong thư mục admin, các bạn tạo 1 file đặt tên là chinh-sua-thanh-vien.php có nội dung như sau :

<?php
	session_start(); 
 ?>
<?php require_once("includes/connection.php");?>
<?php include("includes/permission.php");?>
<?php include ("includes/header.php"); ?>
	<form action="chinh-sua-thanh-vien.php" method="post">
		<table>
			<tr>
				<td colspan="2">
					<h3>Chỉnh sửa thông tin thành viên</h3>
					<input type="hidden" name="id" value="">
				</td>
			</tr>	
			<tr>
				<td nowrap="nowrap">Họ tên :</td>
				<td><input name="fullname" id="fullname" ></td>
			</tr>
			<tr>
				<td nowrap="nowrap">Địa chỉ email :</td>
				<td><input type="text" id="email" name="email" value=""></td>
			</tr>
			<tr>
				<td nowrap="nowrap">Quyền :</td>
				<td>
					<select id="permission" name="permission">
						<option value="-1"></option>
						<option value="0" >Thành viên thường</option>
						<option value="1" >Admin cấp 1</option>
						<option value="2" >Admin cấp 2</option>
					</select>
				</td>
			</tr>
			<tr>
				<td nowrap="nowrap">Block người dùng :</td>
				<td><input type="checkbox" id="is_block" name="is_block" value="1"></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" name="btn_submit" value="Cập nhật thông tin"></td>
			</tr>

		</table>
	</form>
<?php include "includes/footer.php" ?>

Chạy trang này trên trình duyệt theo đường dẫn

http://localhost/website/admin/chinh-sua-thanh-vien.php

Các bạn sẽ được một giao diện form thiết kế như sau :

Tạo trang chỉnh sửa thông tin thành viên
Tạo trang chỉnh sửa thông tin thành viên

b. Viết câu lệnh truy vấn dữ liệu theo tham số id

Tại trang chinh-sua-thanh-vien.php chúng ta sẽ tiến hành lấy tham số id được truyền vào trên thanh url từ trang quan-ly-thanh-vien.php.

Khi lấy được tham số id thì chúng ta sẽ viết câu query và lấy dữ liệu theo id này từ database như sau

	$id = -1;
	if (isset($_GET['id'])) {
		$id = $_GET['id'];
	}
	$sql = "SELECT * FROM users WHERE id = ".$id;
	$query = mysqli_query($conn,$sql);

Ở đoạn code trên, mình mặc định khởi tạo $id = -1 trong trường hợp nếu ko có tham số id gắn trên url thì sẽ ko lấy được dữ liệu và do đó trang sẽ trống. Ngược lại nếu có biến id truyền trên url, thì sẽ thực hiện việc lấy biến id này. Sau đó sẽ viết câu lệnh truy vấn dữ liệu.

Tiếp đến, mình sẽ thực hiện lấy dữ liệu từ câu query này và gán vào form hiển thị mà ta đã thiết kế ở trên như sau

	<?php
		while ( $data = mysqli_fetch_array($query) ) {
			$i = 1;
			$id = $data['id'];
			$is_block = "";
			if ($data['is_block'] == 1) {
				$is_block = "checked='checked'";
			}
	?>
	<form action="chinh-sua-thanh-vien.php" method="post">
		<table>
			<tr>
				<td colspan="2">
					<h3>Chỉnh sửa thông tin thành viên</h3>
					<input type="hidden" name="id" value="<?php echo $id; ?>">
				</td>
			</tr>	
			<tr>
				<td nowrap="nowrap">Họ tên :</td>
				<td><input name="fullname" id="fullname" value="<?php echo $data['fullname']; ?>" ></td>
			</tr>
			<tr>
				<td nowrap="nowrap">Địa chỉ email :</td>
				<td><input type="text" id="email" name="email" value="<?php echo $data['email']; ?>"></td>
			</tr>
			<tr>
				<td nowrap="nowrap">Quyền :</td>
				<td>
					<?php echo make_permission_dropdown($data['permision']); ?>
				</td>
			</tr>
			<tr>
				<td nowrap="nowrap">Block người dùng :</td>
				<td><input type="checkbox" id="is_block" name="is_block" value="1" <?php echo $is_block; ?> ></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" name="btn_submit" value="Cập nhật thông tin"></td>
			</tr>

		</table>
		
	</form>
	<?php } ?>

Ở cột Quyền, các bạn để ý đoạn code này

<?php echo make_permission_dropdown($data['permision']); ?>

đây là đoạn code mình gọi đến hàm make_permission_dropdown, hàm này nhận tham số là $data[‘permision’] để tạo ra dropdown Quyền đã được thiết kế ở phần 1.

Hàm make_permission_dropdown sẽ có nội dung cụ thể như sau :

	function make_permission_dropdown($id){
		$select_1 = "";
		$select_2 = "";
		$select_3 = "";
		if ($id == 0) {
			$select_1 = 'selected = "selected"';
		}
		if ($id == 1) {
			$select_2 = 'selected = "selected"';
		}
		if ($id == 2) {
			$select_3 = 'selected = "selected"';
		}
		$select = '<select id="permission" name="permission">
						<option value="-1"></option>
						<option value="0" '.$select_1.'>Thành viên thường</option>
						<option value="1" '.$select_2.'>Admin cấp 1</option>
						<option value="2" '.$select_3.'>Admin cấp 2</option>
					</select>';

		return $select;
	}

Đoạn code trên đơn giản chỉ là nhận tham số $id truyền vào rồi kiếm tra biến $id này có giá trị là 0,1 hoặc 2. Nếu có giá trị tương ứng với một trong 3 giá trị này thì sẽ gán thuộc tính selected cho option của dropdown, từ đó sẽ biết được thành viên đó thuộc Quyền nào.

Nếu bạn vẫn còn khó hiểu thì hãy tiếp tục kiên nhẫn đọc đến cuối bài ở mục d. Mình sẽ đưa toàn bộ source code của trang chinh-sua-thanh-vien.php lên để bạn chạy thử và tự nghiệm nhé.

c. Tiến hành câp nhật dữ liệu khi ấn nút Cập nhật thông tin

Sau khi đã tiến hành hiển thị dữ liệu lên form, tiếp đến mình sẽ thực hiện việc cập nhật dữ liệu xuống database.

Tại thẻ form các bạn thấy mình dùng phương thức POST để lấy dữ liệu.

Đoạn code cập nhật thông tin xuống database sẽ như sau

	if (isset($_POST["btn_submit"])) {
		//lấy thông tin từ các form bằng phương thức POST
		$name = $_POST["fullname"];
		$email = $_POST["email"];
		$permission = $_POST["permission"];
		$is_block = 0;
		if (isset($_POST["is_block"])) {
			$is_block = $_POST["is_block"];
		}

		$id = $_POST["id"];
		// Viết câu lệnh cập nhật thông tin người dùng
		$sql = "UPDATE users SET fullname = '$name', email = '$email', permision = '$permission', is_block = '$is_block' WHERE id=$id";
		// thực thi câu $sql với biến conn lấy từ file connection.php
		mysqli_query($conn,$sql);
		header('Location: quan-ly-thanh-vien.php');
	}

Đoạn code trên có nhiệm vụ kiểm tra người dùng đã ấn nút Cập nhật thông tin hay chưa bằng hàm isset($_POST[‘btn_submit’]). Khi đã ấn rồi thì sẽ thực hiện việc lấy dữ liệu từ form và chạy câu query lưu thông tin vào database. Cuối cùng, sau khi cập nhật dữ liệu xong xuống, sẽ tiền hành chuyển hướng trang về lại trang quan-ly-thanh-vien.php

d. Toàn bộ nội dung source code trang chinh-sua-thanh-vien.php

Như vậy, toàn bộ source code cho trang chinh-sua-thanh-vien.php sẽ như sau

<?php
	session_start(); 
 ?>
<?php require_once("includes/connection.php");?>
<?php include("includes/permission.php");?>
<?php include ("includes/header.php"); ?>
<?php
	if (isset($_POST["btn_submit"])) {
		//lấy thông tin từ các form bằng phương thức POST
		$name = $_POST["fullname"];
		$email = $_POST["email"];
		$permission = $_POST["permission"];
		$is_block = 0;
		if (isset($_POST["is_block"])) {
			$is_block = $_POST["is_block"];
		}

		$id = $_POST["id"];
		// Viết câu lệnh cập nhật thông tin người dùng
		$sql = "UPDATE users SET fullname = '$name', email = '$email', permision = '$permission', is_block = '$is_block' WHERE id=$id";
		// thực thi câu $sql với biến conn lấy từ file connection.php
		mysqli_query($conn,$sql);
		header('Location: quan-ly-thanh-vien.php');
	}

	$id = -1;
	if (isset($_GET['id'])) {
		$id = $_GET['id'];
	}
	$sql = "SELECT * FROM users WHERE id = ".$id;
	$query = mysqli_query($conn,$sql);

	function make_permission_dropdown($id){
		$select_1 = "";
		$select_2 = "";
		$select_3 = "";
		if ($id == 0) {
			$select_1 = 'selected = "selected"';
		}
		if ($id == 1) {
			$select_2 = 'selected = "selected"';
		}
		if ($id == 2) {
			$select_3 = 'selected = "selected"';
		}
		$select = '<select id="permission" name="permission">
						<option value="-1"></option>
						<option value="0" '.$select_1.'>Thành viên thường</option>
						<option value="1" '.$select_2.'>Admin cấp 1</option>
						<option value="2" '.$select_3.'>Admin cấp 2</option>
					</select>';

		return $select;
	}


?>
	<?php
		while ( $data = mysqli_fetch_array($query) ) {
			$i = 1;
			$id = $data['id'];
			$is_block = "";
			if ($data['is_block'] == 1) {
				$is_block = "checked='checked'";
			}
	?>
	<form action="chinh-sua-thanh-vien.php" method="post">
		<table>
			<tr>
				<td colspan="2">
					<h3>Chỉnh sửa thông tin thành viên</h3>
					<input type="hidden" name="id" value="<?php echo $id; ?>">
				</td>
			</tr>	
			<tr>
				<td nowrap="nowrap">Họ tên :</td>
				<td><input name="fullname" id="fullname" value="<?php echo $data['fullname']; ?>" ></td>
			</tr>
			<tr>
				<td nowrap="nowrap">Địa chỉ email :</td>
				<td><input type="text" id="email" name="email" value="<?php echo $data['email']; ?>"></td>
			</tr>
			<tr>
				<td nowrap="nowrap">Quyền :</td>
				<td>
					<?php echo make_permission_dropdown($data['permision']); ?>
				</td>
			</tr>
			<tr>
				<td nowrap="nowrap">Block người dùng :</td>
				<td><input type="checkbox" id="is_block" name="is_block" value="1" <?php echo $is_block; ?> ></td>
			</tr>
			<tr>
				<td colspan="2" align="center"><input type="submit" name="btn_submit" value="Cập nhật thông tin"></td>
			</tr>

		</table>
		
	</form>
	<?php } ?>
<?php include "includes/footer.php" ?>

Lúc này, từ bên trang quan-ly-thanh-vien.php, bạn chọn 1 thành viên bất kỳ và ấn vào liên kết Sửa. Sẽ được chuyển đến trang chinh-sua-thanh-vien.php có nội dung như sau

Nội dung trang chỉnh sửa thành viên khi hoàn thiện
Nội dung trang chỉnh sửa thành viên khi hoàn thiện

Nếu có thắc mắc thì để lại bình luận bên dưới mình sẽ giải đáp

Chúc các bạn thành công !

Nguồn: kungfuphp.com