06/04/2021, 14:46

Bài 16: PHP trang tin tức - Các chức năng của tài khoản admin (tiếp theo) - Web tin tức PHP căn bản

Xin chào tất cả các bạn, chào mừng các bạn đã quay trở lại với series hướng dẫn xây dựng trang tin tức PHP. Ở trong bài trước, chúng ta đã khái quát và xây dựng một vài chức năng của tài khoản, hôm nay mình sẽ hướng dẫn các bạn viết tiếp các chức năng còn lại nhé! Bây giờ chúng ta bắt tay vào làm ...

Xin chào tất cả các bạn, chào mừng các bạn đã quay trở lại với series hướng dẫn xây dựng trang tin tức PHP. Ở trong bài trước, chúng ta đã khái quát và xây dựng một vài chức năng của tài khoản, hôm nay mình sẽ hướng dẫn các bạn viết tiếp các chức năng còn lại nhé! Bây giờ chúng ta bắt tay vào làm ngay thôi.

1.  Cập nhật nội dung bài học trước

Trước khi vào bài, mình lưu ý có một số update trong bài 15 vào ngày 6/7/2017. Các bạn hãy quay lại và update lại source code, bạn nào mà theo dõi sau ngày 6/7/2017 thì có thể bỏ qua.

Nội dung update:

  • Phần 3 dòng 68: Lỗi id lock_acc_list trong dãy nút của danh sách tài khoản (sửa thành unlock_acc_list)
  • Phần 5 dòng 26: Lỗi class warming trong label trạng thái của bảng danh sách (sửa thành warning
  • Phần 5 dòng 37, 40, 43: Thêm các class vào các thẻ a của dãy nút danh sách (.lock-acc-list, .unlock-acc-list, .del-acc-list

Các bạn có thể sửa ngay trực tiếp trên source của bạn bạn.

Ok! Bây giờ chúng ta bắt đầu đi vào bài học hôm nay.

2. Khoá tài khoản

Tất cả các chức năng dưới đây đều chia làm hai loại: thao tác cùng lúc với nhiều tài khoản hoặc thao tác với một tài khoản chỉ định.

Khoá nhiều tài khoản cùng lúc

Viết Ajax gửi dữ liệu

Các bạn mở file admin/js/form.js lên và copy đoạn code này:

// Khoá nhiều tài khoản cùng lúc
$('#lock_acc_list').on('click', function() {
	$confirm = confirm('Bạn có chắc chắn muốn khoá các tài khoản đã chọn không?');
	if ($confirm == true)
	{
		$id_acc = [];

		$('#list_acc input[type="checkbox"]:checkbox:checked').each(function(i) {
			$id_acc[i] = $(this).val();
		});

		if ($id_acc.length === 0)
		{
			alert('Vui lòng chọn ít nhất một tài khoản.');
		}
		else
		{
			$.ajax({
				url : $_DOMAIN + 'accounts.php',
				type : 'POST',
				data : {
					id_acc : $id_acc,
					action : 'lock_acc_list'
				},
				success : function(data) {
					location.reload();
				}, error : function() {
					alert('Đã có lỗi xảy ra, hãy thử lại.');
				}
			});
		}
	}
	else
	{
		return false;
	}
});

Viết PHP xử lý dữ liệu

Mở file admin/accounts.php và chèn đoạn code này bên dưới dòng // Khoá tài khoản:

// Khoá nhiều tài khoản cùng lúc		
else if ($action == 'lock_acc_list')
{
	foreach ($_POST['id_acc'] as $key => $id_acc)
	{
		$sql_check_id_acc_exist = "SELECT id_acc FROM accounts WHERE id_acc = '$id_acc'";
		if ($db->num_rows($sql_check_id_acc_exist))
		{
			$sql_lock_acc = "UPDATE accounts SET status = '1' WHERE id_acc = '$id_acc'";
			$db->query($sql_lock_acc);
		}
	}	
	$db->close();
}

Khoá tài khoản chỉ định

Viết Ajax gửi dữ liệu

Các bạn mở file admin/js/form.js lên và copy đoạn code này:

// Khoá tài khoản chỉ định trong bảng danh sách
$('.lock-acc-list').on('click', function() {
	$confirm = confirm('Bạn có chắc chắn muốn khoá tài khoản này không?');
	if ($confirm == true)
	{
		$id_acc = $(this).attr('data-id');

		$.ajax({
			url : $_DOMAIN + 'accounts.php',
			type : 'POST',
			data : {
				id_acc : $id_acc,
				action : 'lock_acc'
			},
			success : function() {
				location.reload();
			}
		});
	}
	else
	{
		return false;
	}
});

Viết PHP xử lý dữ liệu

Mở file admin/accounts.php và chèn đoạn code này bên dưới code xử lý khoá tài khoản:

// Khoá 1 tài khoản
else if ($action == 'lock_acc')
{		
	$id_acc = trim(htmlspecialchars(addslashes($_POST['id_acc'])));
	$sql_check_id_acc_exist = "SELECT id_acc FROM accounts WHERE id_acc = '$id_acc'";
	if ($db->num_rows($sql_check_id_acc_exist))
	{
		$sql_lock_acc = "UPDATE accounts SET status = '1' WHERE id_acc = '$id_acc'";
		$db->query($sql_lock_acc);
		$db->close();
	}		
}

3. Mở khoá tài khoản

Chức năng này cũng tương tự như phần trên, các bạn cũng có thể tự code rồi quay lại đây xem kết quả :v

Mở khoá nhiều tài khoản cùng lúc

Viết Ajax gửi dữ liệu

Các bạn mở file admin/js/form.js lên và copy đoạn code này:

// Mở khoá nhiều tài khoản cùng lúc
$('#unlock_acc_list').on('click', function() {
	$confirm = confirm('Bạn có chắc chắn muốn mở khoá các tài khoản đã chọn không?');
	if ($confirm == true)
	{
		$id_acc = [];

		$('#list_acc input[type="checkbox"]:checkbox:checked').each(function(i) {
			$id_acc[i] = $(this).val();
		});

		if ($id_acc.length === 0)
		{
			alert('Vui lòng chọn ít nhất một tài khoản.');
		}
		else
		{
			$.ajax({
				url : $_DOMAIN + 'accounts.php',
				type : 'POST',
				data : {
					id_acc : $id_acc,
					action : 'unlock_acc_list'
				},
				success : function(data) {
					location.reload();
				}, error : function() {
					alert('Đã có lỗi xảy ra, hãy thử lại.');
				}
			});
		}
	}
	else
	{
		return false;
	}
});

Viết PHP xử lý dữ liệu

Mở file admin/accounts.php và chèn đoạn code này bên dưới dòng // Mở khoá tài khoản:

// Mở khoá nhiều tài khoản cùng lúc		
else if ($action == 'unlock_acc_list')
{
	foreach ($_POST['id_acc'] as $key => $id_acc)
	{
		$sql_check_id_acc_exist = "SELECT id_acc FROM accounts WHERE id_acc = '$id_acc'";
		if ($db->num_rows($sql_check_id_acc_exist))
		{
			$sql_unlock_acc = "UPDATE accounts SET status = '0' WHERE id_acc = '$id_acc'";
			$db->query($sql_unlock_acc);
		}
	}	
	$db->close();
}

Mở khoá tài khoản chỉ định

Viết Ajax gửi dữ liệu

Các bạn mở file admin/js/form.js lên và copy đoạn code này:

// Mở tài khoản chỉ định trong bảng danh sách
$('.unlock-acc-list').on('click', function() {
	$confirm = confirm('Bạn có chắc chắn muốn mở khoá tài khoản này không?');
	if ($confirm == true)
	{
		$id_acc = $(this).attr('data-id');

		$.ajax({
			url : $_DOMAIN + 'accounts.php',
			type : 'POST',
			data : {
				id_acc : $id_acc,
				action : 'unlock_acc'
			},
			success : function() {
				location.reload();
			}
		});
	}
	else
	{
		return false;
	}
});

Viết PHP xử lý dữ liệu

Mở file admin/accounts.php và chèn đoạn code này bên dưới code xử lý mở khoá tài khoản:

// Mở khoá 1 tài khoản
else if ($action == 'unlock_acc')
{		
	$id_acc = trim(htmlspecialchars(addslashes($_POST['id_acc'])));
	$sql_check_id_acc_exist = "SELECT id_acc FROM accounts WHERE id_acc = '$id_acc'";
	if ($db->num_rows($sql_check_id_acc_exist))
	{
		$sql_unlock_acc = "UPDATE accounts SET status = '0' WHERE id_acc = '$id_acc'";
		$db->query($sql_unlock_acc);
		$db->close();
	}		
}

4. Xoá tài khoản

Cũng như chức năng xoá ở trong các bài trước. Chức năng xoá này cũng chia làm 2 loại, cấu trúc của nó cũng giống như hai phần trên nên các bạn cũng có thể tự viết.

Xoá nhiều tài khoản cùng lúc

Viết Ajax gửi dữ liệu

Các bạn mở file admin/js/form.js lên và copy đoạn code này:

// Xoá nhiều tài khoản cùng lúc
$('#del_acc_list').on('click', function() {
	$confirm = confirm('Bạn có chắc chắn muốn xoá các tài khoản đã chọn không?');
	if ($confirm == true)
	{
		$id_acc = [];

		$('#list_acc input[type="checkbox"]:checkbox:checked').each(function(i) {
			$id_acc[i] = $(this).val();
		});

		if ($id_acc.length === 0)
		{
			alert('Vui lòng chọn ít nhất một tài khoản.');
		}
		else
		{
			$.ajax({
				url : $_DOMAIN + 'accounts.php',
				type : 'POST',
				data : {
					id_acc : $id_acc,
					action : 'del_acc_list'
				},
				success : function(data) {
					location.reload();
				}, error : function() {
					alert('Đã có lỗi xảy ra, hãy thử lại.');
				}
			});
		}
	}
	else
	{
		return false;
	}
});

Viết PHP xử lý dữ liệu

Mở file admin/accounts.php và chèn đoạn code này bên dưới dòng // Xoá tài khoản:

// Xoá nhiều tài khoản cùng lúc		
else if ($action == 'del_acc_list')
{
	foreach ($_POST['id_acc'] as $key => $id_acc)
	{
		$sql_check_id_acc_exist = "SELECT id_acc FROM accounts WHERE id_acc = '$id_acc'";
		if ($db->num_rows($sql_check_id_acc_exist))
		{
			$sql_del_acc = "DELETE FROM accounts WHERE id_acc = '$id_acc'";
			$db->query($sql_del_acc);
		}
	}	
	$db->close();
}

Xoá tài khoản chỉ định

Viết Ajax gửi dữ liệu

Các bạn mở file admin/js/form.js lên và copy đoạn code này:

// Xoá tài khoản chỉ định trong bảng danh sách
$('.del-acc-list').on('click', function() {
	$confirm = confirm('Bạn có chắc chắn muốn xoá tài khoản này không?');
	if ($confirm == true)
	{
		$id_acc = $(this).attr('data-id');

		$.ajax({
			url : $_DOMAIN + 'accounts.php',
			type : 'POST',
			data : {
				id_acc : $id_acc,
				action : 'del_acc'
			},
			success : function() {
				location.reload();
			}
		});
	}
	else
	{
		return false;
	}
});

Viết PHP xử lý dữ liệu

Mở file admin/accounts.php và chèn đoạn code này bên dưới code xử lý xoá tài khoản:

// Xoá 1 tài khoản
else if ($action == 'del_acc')
{		
	$id_acc = trim(htmlspecialchars(addslashes($_POST['id_acc'])));
	$sql_check_id_acc_exist = "SELECT id_acc FROM accounts WHERE id_acc = '$id_acc'";
	if ($db->num_rows($sql_check_id_acc_exist))
	{
		$sql_del_acc = "DELETE FROM accounts WHERE id_acc = '$id_acc'";
		$db->query($sql_del_acc);
		$db->close();
	}		
}	
Giờ các bạn chạy thử xem thành quả nhé!

5. Lời kết

Các chức năng trên đây tương tự nhau nên các bạn có thể tự xây dựng được mà không cần nhìn vào source code, qua bài sau mình sẽ hướng dẫn các bạn xây dựng chức năng hồ sơ admin cho ứng dụng. Nếu các bạn có thắc mắc gì hãy comment bên dưới hoặc đăng bài trên group kèm link bài viết để được hỗ trợ nhanh nhất. Cảm ơn các bạn đã theo dõi, chúc các bạn thành công!

Tạ Quốc Bảo

23 chủ đề

7270 bài viết

Cùng chủ đề
0