[PHP nâng cao]Một Ví dụ hướng đối tượng trong PHP cụ thể

Hôm nay edu.com.vn tiếp tục chia sẽ  1 ví dụ hướng đối tượng trong PHP . Nội dung là xây dựng các chức năng cho bảng thể loại trong bài tập thiết kế web tin tức như thêm, xóa, sửa và show bảng thể loại.

Các bước thực hiện bài tập ứng dụng show, thêm, xóa, sửa hướng đối tượng trong thiết kế web tin tức như sau

Bước 0: Ta tạo file config.php để ở thư mục gốc. Nội dung như sau:

<?php

$config['host'] = 'localhost';
$config['user'] = 'root';
$config['pass'] = '';
$config['data'] = 'webtintuc';
?>

 

Bước 1: Xây dựng lớp database và lớp thể loại

Ta tạo 2 file class.db.php và class.db.theloai.php trong folder tạo ra gọi là class chẳng hạn.

Nội dung file class.db.php như sau:

<?php

class DB{
    private $link;
    
    /**
     * DB Class's constructor
     * @global type $config
     */
    function __construct() {
        global $config;
        $this->link = mysqli_connect($config['host'], $config['user'], $config['pass'], $config['data'])
                or die("Can't connect");
        mysqli_query($this->link, "set names 'utf8'");
    }
    
    /**
     * Execute a query
     * @param string $query
     * @return result of execute
     */
    public function db_query($query){
        $result = mysqli_query($this->link, $query);
        return $result;
    }
    
    /**
     * Fetch row
     * @param resource $result
     * @return boolean
     */
    public function db_fetch($result){
        $row = mysqli_fetch_assoc($result);
        return $row;
    }
}

File này nội dung đơn giản là khai báo các kết nối và viết 2 function sử dụng nhiều và lặp đi lặp lại trong việc viết code là thêm, xóa, sửa và show dữ liệu. Cụ thể là hàm để thêm, xóa, sửa dữ liệu

 public function db_query($query){
        $result = mysqli_query($this->link, $query);
        return $result;
    }

và hàm để show dữ liệu

 public function db_fetch($result){
        $row = mysqli_fetch_assoc($result);
        return $row;
    }

Còn nội dung file class.db.theloai.php như sau:

<?php

include 'class.db.php';

class DB_TheLoai extends DB{
    
    function __construct() {
        parent::__construct();
    }

    /**
     * Lay danh sach the loai
     * @return array $theloai 
     */
    public function get_theloai($id = -1){
        $query = "SELECT * FROM theloai";
        if($id != -1) $query .= " WHERE idTL=$id"; 
        $result = $this->db_query($query);
        $theloai = array();
        $i = 0;
        while($row = $this->db_fetch($result)){
            $theloai[$i++] = $row;
        }
        return $theloai;
    }
    
    /**
     * 
     * @param string $name ten the loai
     * @param tinyint $sort sap xep
     * @param tinyint $show an hien
     * @return true on success, false on fail
     */
    public function them_theloai($name, $sort = 0, $show = 1){
        $query = "INSERT INTO theloai(TenTL, ThuTu, AnHien) VALUES('$name', '$sort', '$show')";
        $result = $this->db_query($query);
        return $result;
    }
    
    /**
     * Sua the loai
     * @param int $id id cua the loai
     * @param string $name ten the loai
     * @param tinyint $sort sap xep
     * @param tinyint $show an hien
     * @return true on success, false on fail
     */
    public function sua_theloai($id, $name, $sort, $show){
        $query = "UPDATE theloai SET TenTL='$name', ThuTu='$sort', AnHien='$show' WHERE idTL=$id";
        $result = $this->db_query($query);
        return $result;
    }
    
    /**
     * Xoa the loai co id la $id
     * @param int $id cua the loai
     * @return true on success, false on fail
     */
    public function xoa_theloai($id){
        $query = "DELETE FROM theloai WHERE idTL=$id";
        $result = $this->db_query($query);
        return $result;
    }
}

Nội dung file class thể loại này chủ yếu là viết các function thêm, xóa, thể loại và show bảng thể loại trong đó có sử dụng class db mà ta đã tạo lúc nãy. Chú ý trong file này ta sử dụng query để truy vấn cơ sỡ dữ liệu chứ không phải là file tạo ra khi ta submit form trong code giao diện. Đó là ý tưởng chủ đạo trong lập trình hướng đối tượng

Bước 2: Ta sử dụng class thể loại đã viết hàm show bảng thể loại để tạo giao diện như sau

giao dien the loai

 

Code file theloai.php như sau:

<?php

include '../config.php';
include '../class/class.db.theloai.php';

$db_theloai = new DB_TheLoai();

$theloai_arr = $db_theloai->get_theloai();

$theloai_html = "";
if(count($theloai_arr) == 0){
    $theloai_html = 'Không có thể loại <a href="theloai_them.php">THÊM THỂ LOẠI</a>';
}else{
    $theloai_html = '<h1>Quản trị thể loại</h1><table width="100%" id="bang_quantri" cellpadding="10" cellspacing="0"><tr><th>Tên thể loại</th><th>Thứ tự</th><th>Ẩn hiện</th><th colspan="2"><a href="theloai_them.php">Thêm Thể Loại</a></th></tr>';
    foreach($theloai_arr as $item){
        $theloai_html .= '<tr>';
        $theloai_html .= '<td>'.$item['TenTL'].'</td>';
        $theloai_html .= '<td>'.$item['ThuTu'].'</td>';
        $theloai_html .= '<td>'.$item['AnHien'].'</td>';
        $theloai_html .= '<td><a href="theloai_sua.php?id='.$item['idTL'].'">Sửa</a></td>';
        $theloai_html .= '<td><a href="theloai_xoa.php?id='.$item['idTL'].'" onclick="return confirm(\'Bạn có thực sự muốn xóa\');">Xóa</a></td>';
        $theloai_html .= '</tr>';
    }
    $theloai_html .= '</table>';
}

?>
<!DOCTYPE html>
<html>
    <head>
        <title>THỂ LOẠI | QUẢN TRỊ</title>
        <meta charset="utf-8">
        <link href="../css.css" rel="stylesheet">
    </head>
    <body>
        <div class="container">
            <?php echo $theloai_html; ?>
        </div>
    </body>
</html>

Ở đây ta sử dụng

$db_theloai = new DB_TheLoai();

$theloai_arr = $db_theloai->get_theloai();

để lấy bảng thể loại gán cho mảng $theloai_arr và ta muốn show theo từng  dùng ta dùng

foreach($theloai_arr as $item)

Đoạn code thêm thể loại như sau:

<?php

include '../config.php';
include '../class/class.db.theloai.php';

if(isset($_POST['submit'])){
    $db_theloai = new DB_TheLoai();
    $ten_theloai = (isset($_POST['ten_theloai']))? $_POST['ten_theloai'] : "";
    $thu_tu = (isset($_POST['thu_tu']))? $_POST['thu_tu'] : 0;
    $an_hien = (isset($_POST['an_hien']))? $_POST['an_hien'] : "";
    
    $result = $db_theloai->them_theloai($ten_theloai, $thu_tu, $an_hien);
    if($result){
        echo '<script>alert("Thêm thành công!"); window.location="theloai.php";</script>';
    }else{
        echo '<script>alert("Thêm không thành công!"); window.location="theloai.php";</script>';
    }
}
?>
<!DOCTYPE html>
<html>
    <head>
        <title>THỂ LOẠI | QUẢN TRỊ</title>
        <meta charset="utf-8">
        <link href="../css.css" rel="stylesheet">
    </head>
    <body>
        <div class="container">
            <h1>Thêm thể loại</h1>
            <form name="them_theloai" method="POST">
                <table width="100%">
                    <tr>
                        <td>Tên thể loại: </td>
                        <td><input type="text" name="ten_theloai"></td>
                    </tr>
                    <tr>
                        <td>Thứ tự: </td>
                        <td><input type="text" name="thu_tu" value="0"></td>
                    </tr>
                    <tr>
                        <td>Ẩn/Hiện: </td>
                        <td>
                            <select name="an_hien">
                                <option value="1" selected="selected">Hiện</option>
                                <option value="0">Ẩn</option>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2"><input type="submit" value="Thêm thể loại" name="submit"></td>
                    </tr>
                </table>
            </form>
        </div>
    </body>
</html>

và hình ảnh của giao diện thêm:

themtheloai

Tiếp tục là code sửa thể loại:

<?php

include '../config.php';
include '../class/class.db.theloai.php';

if(isset($_GET['id'])){
    $db_theloai = new DB_TheLoai();
    $theloai_arr = $db_theloai->get_theloai($_GET['id']);
    $ten_theloai = $theloai_arr[0]['TenTL'];
    $thu_tu = $theloai_arr[0]['ThuTu'];
    $an_hien = $theloai_arr[0]['AnHien'];
    
    if(isset($_POST['submit'])){
        $id = (isset($_POST['id']))? $_POST['id'] : -1;
        $ten_theloai = (isset($_POST['ten_theloai']))? $_POST['ten_theloai'] : "";
        $thu_tu = (isset($_POST['thu_tu']))? $_POST['thu_tu'] : 0;
        $an_hien = (isset($_POST['an_hien']))? $_POST['an_hien'] : "";
        
        $result = $db_theloai->sua_theloai($id, $ten_theloai, $thu_tu, $an_hien);
        if($result){
            echo '<script>alert("Cập nhật thành công!"); window.location="theloai.php";</script>';
        }else{
            echo '<script>alert("Cập nhật không thành công!"); window.location="theloai.php";</script>';
        }
    }
    

}
?>
<!DOCTYPE html>
<html>
    <head>
        <title>THỂ LOẠI | QUẢN TRỊ</title>
        <meta charset="utf-8">
        <link href="../css.css" rel="stylesheet">
    </head>
    <body>
        <div class="container">
            <h1>Cập nhật thể loại</h1>
            <form name="sua_theloai" method="POST">
                <input type="hidden" name="id" value="<?php echo $_GET['id']; ?>">
                <table width="100%">
                    <tr>
                        <td>Tên thể loại: </td>
                        <td><input type="text" name="ten_theloai" value="<?php echo $ten_theloai; ?>"></td>
                    </tr>
                    <tr>
                        <td>Thứ tự: </td>
                        <td><input type="text" name="thu_tu" value="<?php echo $thu_tu; ?>"></td>
                    </tr>
                    <tr>
                        <td>Ẩn/Hiện: </td>
                        <td>
                            <select name="an_hien">
                                <option value="1">Hiện</option>
                                <option value="0" <?php echo ($an_hien == 0)?'selected="selected"':''; ?>>Ẩn</option>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2"><input type="submit" value="Cập nhật thể loại" name="submit"></td>
                    </tr>
                </table>
            </form>
        </div>
    </body>
</html>

Giao diện sửa Thể Loại:

sua the loai

Cuối cùng là code xóa thể loại:

<?php

include '../config.php';
include '../class/class.db.theloai.php';

if(isset($_GET['id'])){
    $db_theloai = new DB_TheLoai();
    $id = $_GET['id'];
    
    $result = $db_theloai->xoa_theloai($id);
    if($result){
        echo '<script>alert("Xóa thành công!"); window.location="theloai.php";</script>';
    }else{
        echo '<script>alert("Xóa không thành công!"); window.location="theloai.php";</script>';
    }
}
?>
<!DOCTYPE html>
<html>
    <head>
        <title>THỂ LOẠI | QUẢN TRỊ</title>
        <meta charset="utf-8">
        <link href="../css.css" rel="stylesheet">
    </head>
    <body>
        <div class="container">
            <h1>Xóa thể loại</h1>
        </div>
    </body>
</html>

và giao diện xóa thể loại có hình dạng như sau:

xoa the loai

 

Như vậy qua bài lab này ta từng bước biết viết 1 ứng dụng show dữ liệu, thêm, xóa, sửa dữ liệu bằng phương pháp lập trình hướng đối tượng trong PHP. Đối với bài lab tin tức thì chúng ta còn làm thêm cho 2 bảng tin &  loại tin nữa. Nhưng cách làm cho 2 bảng này cũng có thể thực hiện dựa vào bài lab này. Vậy Viết ví dụ hướng đối tượng trong PHP trong thiết kế web tin tức ta đã thực hiện thành công

Chúc các bạn thành công. Password download: phpfree2014