WEB TIN TỨC PHP CĂN BẢN
Bài 1: PHP trang tin tức - Tạo database và cấu trúc folder admin Bài 2: PHP trang tin tức - Viết thư viện xử lý database admin Bài 3: PHP trang tin tức - Viết thư viện session và functions admin Bài 4: PHP trang tin tức - Kết nối database và cấu trúc index admin Bài 5: PHP trang tin tức - Xây dựng header và footer admin Bài 6: PHP trang tin tức - Tạo chức năng đăng nhập, đăng xuất admin Bài 7: PHP trang tin tức - Xây dựng sidebar, content và phân trang admin Bài 8: PHP trang tin tức - Các chức năng chuyên mục admin Bài 9: PHP trang tin tức - Các chức năng chuyên mục admin (tiếp theo) Bài 10: PHP trang tin tức - Các chức năng của hình ảnh admin Bài 11: PHP trang tin tức - Các chức năng của hình ảnh admin (tiếp theo) Bài 12: PHP trang tin tức - Các chức năng của bài viết admin Bài 13: PHP trang tin tức - Các chức năng của bài viết admin (tiếp theo) Bài 14: PHP trang tin tức - Các chức năng cài đặt admin Bài 15: PHP trang tin tức - Các chức năng của tài khoản admin Bài 16: PHP trang tin tức - Các chức năng của tài khoản admin (tiếp theo) Bài 17: PHP trang tin tức - Các chức năng của profile admin Bài 18: PHP trang tin tức - Các chức năng của profile admin (tiếp theo) Bài 19: PHP trang tin tức - Xây dựng dashboard admin và fix bug Bài 20: PHP trang tin tức - Cấu trúc folder client Bài 21: PHP trang tin tức - Kết nối database và rewrite url Bài 22: PHP trang tin tức - Xây dựng header và footer client Bài 23: PHP trang tin tức - Xây dựng layout client Bài 24: PHP trang tin tức - Hiển thị danh sách bài viết mới nhất Bài 25: PHP trang tin tức - Hiển thị danh sách bài viết chuyên mục Bài 26: PHP trang tin tức - Hiển thị nội dung bài viết Bài 27: PHP trang tin tức - Xây dựng chức năng tìm kiếm Bài 28: PHP trang tin tức - Xây dựng các trang con và clear source (End)
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Bài 2: PHP trang tin tức - Viết thư viện xử lý database admin

Chào các bạn, đây là bài thứ 2 trong loạt bài series hướng dẫn xây dựng trang tin tức bằng PHP. Ở bài trước, mình đã giới thiệu và xây dựng folder admin của ứng dụng. Hôm nay mình sẽ hướng dẫn các bạn viết thư viện xử lý database admin bằng PHP hướng đối tượng. Bây giờ chúng ta bắt đầu nhé !

1. Thư viện xử lý database admin

Đầu tiên các bạn vào đường dẫn thư mục admin/classes và tạo file DB.php, chúng ta sẽ viết thư viện xử lý database tại file này.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Đây là toàn bộ nội dung của file này, các bạn copy và paste vào :

<?php

// Lớp database
class DB
{
	// Các biến thông tin kết nối
	private $hostname = 'localhost',
			$username = 'root',
			$password = '',
			$dbname = 'newspage';

	// Biến lưu trữ kết nối
	public $cn = NULL;

	// Hàm kết nối
	public function connect()
	{
		$this->cn = mysqli_connect($this->hostname, $this->username, $this->password, $this->dbname);
	}

	// Hàm ngắt kết nối
	public function close()
	{
	    if ($this->cn)
	    {
	        mysqli_close($this->cn);
	    }
	}

	// Hàm truy vấn
	public function query($sql = null) 
	{		
	    if ($this->cn)
	    {
			mysqli_query($this->cn, $sql);
	    }
	}

	// Hàm đếm số hàng
	public function num_rows($sql = null) 
	{
		if ($this->cn)
		{
			$query = mysqli_query($this->cn, $sql);
			if ($query)
			{
				$row = mysqli_num_rows($query);
				return $row;
			}	
		}		
	}

	// Hàm lấy dữ liệu
	public function fetch_assoc($sql = null, $type)
	{
		if ($this->cn)
		{
			$query = mysqli_query($this->cn, $sql);
			if ($query)
			{
				if ($type == 0)
				{
					// Lấy nhiều dữ liệu gán vào mảng
					while ($row = mysqli_fetch_assoc($query))
					{
						$data[] = $row;
					}
					return $data;
				}
				else if ($type == 1)
				{
					// Lấy một hàng dữ liệu gán vào biến
					$data = mysqli_fetch_assoc($query);
					return $data;
				}
			}		
		}
	}

	// Hàm lấy ID cao nhất
	public function insert_id()
	{
		if ($this->cn)
		{
			$count = mysqli_insert_id($this->cn);
			if ($count == '0')
			{
				$count = '1';
			}
			else
			{
				$count = $count;
			}
			return $count;
		}
	}

	// Hàm charset cho database
	public function set_char($uni)
	{
		if ($this->cn)
		{
			mysqli_set_charset($this->cn, $uni);
		}
	}
}

?>
Mình sẽ giải thích các hàm trên.

Các biến thông tin kết nối

Ở đây mình sử dụng Xampp, nếu các bạn sử dụng server ảo khác thì có thể thay đổi các biến trên nhưng $dbname vẫn phải là newspage để trùng tên với database mà mình đã tạo ở bài trước.

Biến kết nối

Vì code trên mình sử dụng hàm nên để tối ưu ta phải khai báo biến kết nối toàn cục, sau đó các câu truy vấn sẽ dùng chung biến kết nối này.

Hàm kết nối

// Hàm kết nối
public function connect()
{
	$this->cn = mysqli_connect($this->hostname, $this->username, $this->password, $this->dbname);
}
Hàm này chắc đơn giản rồi nên mình sẽ không nói thêm nhé !

Hàm ngắt kết nối

// Hàm ngắt kết nối
public function close()
{
	if ($this->cn)
        {
	        mysqli_close($this->cn);
	}
}
Trước khi ngắt kết nối, chúng ta phải kiểm tra đã có kết nối chưa rồi mới thực thi.

Hàm truy vấn

// Hàm truy vấn
public function query($sql = null) 
{		
	if ($this->cn)
        {
		mysqli_query($this->cn, $sql);
	}
}
Trước khi truy vấn đến một câu lệnh SQL nào đó, chúng ta cần kiểm tra có tồn tại kết nối hay không rồi mới thực thi truy vấn.

Hàm đếm số hàng

// Hàm đếm số hàng
public function num_rows($sql = null) 
{
	if ($this->cn)
	{
		$query = mysqli_query($this->cn, $sql);
		if ($query)
		{
			$row = mysqli_num_rows($query);
			return $row;
		}	
	}		
}
Đầu tiên chúng ta kiểm tra có tồn tại kết nối hay không, rồi truy vấn câu lệnh SQL, nếu tồn tại thì chúng ta mới thực thi lấy số hàng của table rồi trả về kết quả.

Hàm lấy dữ liệu

// Hàm lấy dữ liệu
public function fetch_assoc($sql = null, $type)
{
	if ($this->cn)
	{
		$query = mysqli_query($this->cn, $sql);
		if ($query)
		{
			if ($type == 0)
			{
				// Lấy nhiều dữ liệu gán vào mảng
				while ($row = mysqli_fetch_assoc($query))
				{
					$data[] = $row;
				}
				return $data;
			}
			else if ($type == 1)
			{
				// Lấy một hàng dữ liệu gán vào biến
				$data = mysqli_fetch_assoc($query);
				return $data;
			}
		}		
	}
}
Tuỳ vào theo các code của mỗi người mà có từng thư viện xử lý database khác nhau. Trong hàm lấy dữ liệu của mình ngoài tham số $sql còn có thêm tham số $type. Biến $type sẽ xử lý nhánh.

  • Nếu $type = 0 thì nó dùng vòng lặp while để in dữ liệu (thường dành cho dữ liệu có 2 row trở lên như danh sách ghi chú, ...).
  • Nếu $type = 1 thì nó in dữ liệu bình thường (thường dành cho dữ liệu có 1 row như thông tin tài khoản, ...).

Hàm lấy ID cao nhất

// Hàm lấy ID cao nhất
public function insert_id() 
{
	if ($this->cn)
	{
		$count = mysqli_insert_id($this->cn);
		if ($count == '0')
		{
			$count = '1';
		}
		else
		{
			$count = $count;
		}
		return $count;
	}
}
Thông thường khi thiết kế CSDL cho các hệ thống website thì khóa chính ta hay sử dụng tăng tự động (auto_increment), vì vậy lúc thêm dữ liệu ta không cần phải giá trị ID khóa chính. Như vậy ta không thể biết được khóa chính của record vừa insert là bao nhiêu nên chúng ta sẽ dùng hàm này để trả ID mình vừa insert. Nếu còn chưa hiển rõ các bạn có thể tham khảo bài viết Lấy ID vừa insert bằng PHP nhé !

Hàm charset cho database

// Hàm charset cho database
public function set_char($uni)
{
	if ($this->cn)
	{
		mysqli_set_charset($this->cn, $uni);
	}
}
Hàm này cũng khá quen rồi, các bạn cứ hiển nôm na là nó thiết lập kiểu chữ hiển thị trong database.

2. Lời kết

Như vậy các bạn đã nắm được cách thực thi của các hàm trên để tương tác với CSDL, nếu như các bạn nắm vững PHP OOP thì mấy cái này cũng quá quen rồi phải không nào ! Qua bài sau, chúng ta sẽ viết thư viện session và functions cho phần admin của ứng dụng trang tin tức. Cảm ơn các bạn đã theo dõi, chúc các bạn thành công !

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top