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

Ngày đăng: 2023-01-10 21:05:12

       Bài này, chúng ta 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é !

     Mục lục:

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

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

                      . Biến kết nối.

                      . Hàm kết nối.

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

                      . Hàm truy vấn

                      . Hàm đếm số hàng.

                      . Hàm lấy dữ liệu.

                      . Hàm lấy ID cao nhất.

                              Hàm charset cho database.

               2. Lời kết.

​​​​

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.

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.

 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 !


Code games & Web Làm web tin tức căn bản bằng PHP

Bài viết trong cùng chuyên mục

Góc games giải trí



Cờ caro


Butterfly


Lật hình (luyện trí nhớ)

Cờ tướng ONLINE

Xếp hình

Ghép hình

15_PUZZLE

Kill ghosts

Banchim

Planet Defense

Tower game

Tower game

Plapy Bird (NH.Đông)

Vượt chướng ngại vật



0379136392

Thông tin liên hệ: Lê Văn Thuyên - ĐT: 0379136392 ; Gmail: lethuyen0379136392@gmail.com

Comment

 +   Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn cho sự phát triển của website này. Xin chân thành cảm ơn!

Trả lời

 *   Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!

Trả lời

 *   Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!

Trả lời

 +   -:

Trả lời

 +   -:

Trả lời

11991