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.
Đâ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);
}
}
}
?>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.
Bài viết này được đăng tại [free tuts .net]
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 ngắt kết nối
// Hàm ngắt kết nối
public function close()
{
if ($this->cn)
{
mysqli_close($this->cn);
}
}Hàm truy vấn
// Hàm truy vấn
public function query($sql = null)
{
if ($this->cn)
{
mysqli_query($this->cn, $sql);
}
}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;
}
}
}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;
}
}
}
}$sql còn có thêm tham số $type. Biến $type sẽ xử lý nhánh.
- Nếu
$type = 0thì 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 = 1thì 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;
}
}Hàm charset cho database
// Hàm charset cho database
public function set_char($uni)
{
if ($this->cn)
{
mysqli_set_charset($this->cn, $uni);
}
}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 !
Danh sách file tải về
| Tên file tải về | Pass giải nén |
|---|---|
| Bài 2: PHP trang tin tức - Viết thư viện xử lý database admin | freetuts.net hoặc gameportable.net |

Xây dựng chức năng đăng nhập và đăng ký với php và mysql
Bảng mã ASCII chuẩn các hệ nhị phân - thập phân - thập lục phân
Cách khai báo biến trong PHP, các loại biến thường gặp
Bài 26: Hàm isset() và empty() trong php
Các kiểu dữ liệu trong PHP và các loại biến tương ứng
Bài 19: Phương thức GET và POST trong php
Download và cài đặt Vertrigo Server
Bài 20: Các hàm xử lý chuỗi trong php
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng