Nền tảng Kiến thức - Hành trang tới Tương lai
Card image

Chương 11-Bài 2. Thực hiện Trang chủ Frontend

Tác giả: Dương Nguyễn Phú Cường #8873
Ngày đăng: Hồi xưa đó
Lượt xem: 255

Workflow xử lý

sequenceDiagram
    autonumber
    participant C as Client
    participant S as Server
    participant DB as Database

    
    C ->> +S: Gởi yêu cầu (Request GET)
    note right of C: https://nentang.vn/frontend/index.php
    S ->> +DB: Thực thi (Execute SQL Query)
    note over S,DB: SELECT * FROM sanpham AS sp...<br />JOIN loaisanpham AS lsp ON sp.lsp_ma = lsp.lsp_ma<br />...
    DB -->> -S: Databse trả về Khối dữ liệu (data)
    rect rgba(255, 0, 0, 0.3)
    loop Duyệt các Records
        S->>S: Sử dụng vòng lặp WHILE <br />phân tách khối dữ liệu thành mảng Array trong PHP
    end
    end
    loop Duyệt các dòng trong Array
        S->>S: Vẽ (render) các Sản phẩm mong muốn
    end
    S -->> -C: Trả về phản hồi (Response)
    note right of C: nội dung của response là HTML, CSS, JS
 

Step 1: tạo file xử lý cho Trang chủ Frontend

  • Tạo file /frontend/index.php
  • Trong xử lý logic Frontend, chúng ta cần phải:
    • Lấy dữ liệu Danh sách Sản phẩm, cần có các cột dữ liệu: id, ten, giacu, giamoi, hinhsanpham, loaisanpham...
<?php
// hàm `session_id()` sẽ trả về giá trị SESSION_ID (tên file session do Web Server tự động tạo)
// - Nếu trả về Rỗng hoặc NULL => chưa có file Session tồn tại
if (session_id() === '') {
    // Yêu cầu Web Server tạo file Session để lưu trữ giá trị tương ứng với CLIENT (Web Browser đang gởi Request)
    session_start();
}
?>

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>NenTang.vn</title>

    <!-- Nhúng file Quản lý các Liên kết CSS dùng chung cho toàn bộ trang web -->
    <?php include_once(__DIR__ . '/layouts/styles.php'); ?>

    <link href="/php/myhand/assets/frontend/css/style.css" type="text/css" rel="stylesheet" />

    <style>
        .homepage-slider-img {
            width: 100%;
            height: 450px;
            object-fit: cover;
        }
    </style>
</head>

<body class="d-flex flex-column h-100">
    <!-- header -->
    <?php include_once(__DIR__ . '/layouts/partials/header.php'); ?>
    <!-- end header -->

    <main role="main" class="mb-2">
        <!-- Block content -->
        <?php
        // Hiển thị tất cả lỗi trong PHP
        // Chỉ nên hiển thị lỗi khi đang trong môi trường Phát triển (Development)
        // Không nên hiển thị lỗi trên môi trường Triển khai (Production)
        ini_set('display_errors', 1);
        ini_set('display_startup_errors', 1);
        error_reporting(E_ALL);

        // Truy vấn database để lấy danh sách
        // 1. Include file cấu hình kết nối đến database, khởi tạo kết nối $conn
        include_once(__DIR__ . '/../dbconnect.php');

        // 2. Chuẩn bị câu truy vấn $sql
        $sqlDanhSachSanPham = <<<EOT
        SELECT sp.sp_ma, sp.sp_ten, sp.sp_gia, sp.sp_giacu, sp.sp_mota_ngan, sp.sp_soluong, lsp.lsp_ten, MAX(hsp.hsp_tentaptin) AS hsp_tentaptin
        FROM `sanpham` sp
        JOIN `loaisanpham` lsp ON sp.lsp_ma = lsp.lsp_ma
        LEFT JOIN `hinhsanpham` hsp ON sp.sp_ma = hsp.sp_ma
        GROUP BY sp.sp_ma, sp.sp_ten, sp.sp_gia, sp.sp_giacu, sp.sp_mota_ngan, sp.sp_soluong, lsp.lsp_ten
EOT;

        // 3. Thực thi câu truy vấn SQL để lấy về dữ liệu
        $result = mysqli_query($conn, $sqlDanhSachSanPham);

        // 4. Khi thực thi các truy vấn dạng SELECT, dữ liệu lấy về cần phải phân tích để sử dụng
        // Thông thường, chúng ta sẽ sử dụng vòng lặp while để duyệt danh sách các dòng dữ liệu được SELECT
        // Ta sẽ tạo 1 mảng array để chứa các dữ liệu được trả về
        $dataDanhSachSanPham = [];
        while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
            $dataDanhSachSanPham[] = array(
                'sp_ma' => $row['sp_ma'],
                'sp_ten' => $row['sp_ten'],
                'sp_gia' => number_format($row['sp_gia'], 2, ".", ",") . ' vnđ',
                'sp_giacu' => number_format($row['sp_giacu'], 2, ".", ","),
                'sp_mota_ngan' => $row['sp_mota_ngan'],
                'sp_soluong' => $row['sp_soluong'],
                'lsp_ten' => $row['lsp_ten'],
                'hsp_tentaptin' => $row['hsp_tentaptin'],
            );
        }

        ?>

        <!-- Carousel - Slider -->
        <div id="myCarousel" class="carousel slide" data-ride="carousel">
            <ol class="carousel-indicators">
                <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
                <li data-target="#myCarousel" data-slide-to="1"></li>
                <li data-target="#myCarousel" data-slide-to="2"></li>
            </ol>
            <div class="carousel-inner">
                <div class="carousel-item active">
                    <img src="/php/myhand/assets/frontend/img/slider-1.jpg" class="img-fluid homepage-slider-img" />
                    <div class="container">
                        <div class="carousel-caption text-left">
                            <h1>Nền Tảng - Nơi mua sắm tuyệt vời</h1>

                        </div>
                    </div>
                </div>
                <div class="carousel-item">
                    <img src="/php/myhand/assets/frontend/img/slider-2.jpg" class="img-fluid homepage-slider-img" />
                    <div class="container">
                        <div class="carousel-caption">
                            <h1>Hàng triệu sản phẩm - Lựa chọn mỏi tay</h1>

                        </div>
                    </div>
                </div>
                <div class="carousel-item">
                    <img src="/php/myhand/assets/frontend/img/slider-3.jpg" class="img-fluid homepage-slider-img" />
                    <div class="container">
                        <div class="carousel-caption text-right">
                            <h1>Chất lượng là Hàng đầu.</h1>

                        </div>
                    </div>
                </div>
            </div>
            <a class="carousel-control-prev" href="#myCarousel" role="button" data-slide="prev">
                <span class="carousel-control-prev-icon" aria-hidden="true"></span>
                <span class="sr-only">Previous</span>
            </a>
            <a class="carousel-control-next" href="#myCarousel" role="button" data-slide="next">
                <span class="carousel-control-next-icon" aria-hidden="true"></span>
                <span class="sr-only">Next</span>
            </a>
        </div>

        <!-- Tính năng Marketing -->
        <div class="container marketing">
            <!-- Three columns of text below the carousel -->
            <div class="row">
                <div class="col-lg-4 text-center">
                    <img class="bd-placeholder-img rounded-circle" width="140" height="140" src="/php/myhand/assets/frontend/img/icon-1.png" />
                    <h2>Đặt hàng</h2>
                    <p>Chọn sản phẩm bạn yêu thích, và Đặt hàng.</p>
                </div><!-- /.col-lg-4 -->
                <div class="col-lg-4 text-center">
                    <img class="bd-placeholder-img rounded-circle" width="140" height="140" src="/php/myhand/assets/frontend/img/icon-2.png" />
                    <h2>Tạo đơn hàng</h2>
                    <p>Theo dõi đơn hàng của bạn.</p>
                </div><!-- /.col-lg-4 -->
                <div class="col-lg-4 text-center">
                    <img class="bd-placeholder-img rounded-circle" width="140" height="140" src="/php/myhand/assets/frontend/img/icon-3.png" />
                    <h2>Giao hàng</h2>
                    <p>Giao hàng tận nơi.</p>
                </div><!-- /.col-lg-4 -->
            </div><!-- /.row -->


            <!-- START THE FEATURETTES -->

            <hr class="featurette-divider">

            <div class="row featurette">
                <div class="col-md-7">
                    <h2 class="featurette-heading">Đặt hàng, Tạo đơn hàng, Giao hàng <span class="text-muted">Nhanh chóng</span>
                    </h2>
                    <p class="lead">Nơi mua sắm tuyệt vời cho mọi lứa tuổi.</p>
                </div>
                <div class="col-md-5">
                    <img src="/php/myhand/assets/frontend/img/marketing-1.png" class="img-fluid" />
                </div>
            </div>

            <hr class="featurette-divider">

            <div class="row featurette">
                <div class="col-md-7 order-md-2">
                    <h2 class="featurette-heading">Báo cáo Doanh thu tuyệt vời <span class="text-muted">Theo dõi đơn hàng của
                            bạn.</span></h2>
                    <p class="lead">Hệ thống theo dõi đơn hàng chi tiết, thông tin mọi lúc mọi nơi.</p>
                </div>
                <div class="col-md-5 order-md-1">
                    <img src="/php/myhand/assets/frontend/img/marketing-2.png" class="img-fluid" />
                </div>
            </div>

            <hr class="featurette-divider">

            <!-- /END THE FEATURETTES -->

        </div>

        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    <div class="slider slider-nav slider-new-sanphams">

                    </div>
                </div>
            </div>
        </div>

        <!-- Danh sách sản phẩm -->
        <section class="jumbotron text-center">
            <div class="container">
                <h1 class="jumbotron-heading">Danh sách Sản phẩm</h1>
                <p class="lead text-muted">Các sản phẩm với chất lượng, uy tín, cam kết từ nhà Sản xuất, phân phối và bảo hành
                    chính hãng.</p>
            </div>
        </section>

        <!-- Giải thuật duyệt và render Danh sách sản phẩm theo dòng, cột của Bootstrap -->
        <div class="sanphams py-5 bg-light">
            <div class="container">
                <div class="row row-cols-3">
                    <?php foreach ($dataDanhSachSanPham as $sanpham) : ?>
                        <div class="col">
                            <div class="card mb-4 shadow-sm">
                                <div class="card-header">
                                    <div class="ribbon-wrapper">
                                        <div class="ribbon red">MỚI</div>
                                    </div>

                                    <!-- Nếu có hình sản phẩm thì hiển thị -->
                                    <?php if (!empty($sanpham['hsp_tentaptin'])) : ?>
                                        <div class="container-img">
                                            <a href="/php/myhand/frontend/sanpham/detail.php?sp_ma=<?= $sanpham['sp_ma'] ?>">
                                                <img class="bd-placeholder-img card-img-top img-fluid" width="100%" height="350" src="/php/myhand/assets/uploads/products/<?= $sanpham['hsp_tentaptin'] ?>" />
                                            </a>
                                        </div>
                                        <!-- Nếu không có hình sản phẩm thì hiển thị ảnh mặc định -->
                                    <?php else : ?>
                                        <div class="container-img">
                                            <a href="/php/myhand/frontend/sanpham/detail.php?sp_ma=<?= $sanpham['sp_ma'] ?>">
                                                <img class="bd-placeholder-img card-img-top img-fluid" width="100%" height="350" src="/php/myhand/assets/shared/img/default-image_600.png" />
                                            </a>
                                        </div>
                                    <?php endif; ?>
                                </div>
                                <div class="card-body">
                                    <a href="/php/myhand/frontend/sanpham/detail.php?sp_ma=<?= $sanpham['sp_ma'] ?>">
                                        <h5><?= $sanpham['sp_ten'] ?></h5>
                                    </a>
                                    <h6><?= $sanpham['lsp_ten'] ?></h6>
                                    <p class="card-text"><?= $sanpham['sp_mota_ngan'] ?></p>
                                    <div class="d-flex justify-content-between align-items-center">
                                        <div class="btn-group">
                                            <a class="btn btn-sm btn-outline-secondary" href="/php/myhand/frontend/sanpham/detail.php?sp_ma=<?= $sanpham['sp_ma'] ?>">Xem chi tiết</a>
                                        </div>
                                        <small class="text-muted text-right">
                                            <s><?= $sanpham['sp_giacu'] ?></s>
                                            <b><?= $sanpham['sp_gia'] ?></b>
                                        </small>
                                    </div>
                                </div>
                            </div>
                        </div>
                    <?php endforeach; ?>
                </div>
            </div>
        </div>
        <!-- End block content -->
    </main>

    <!-- footer -->
    <?php include_once(__DIR__ . '/layouts/partials/footer.php'); ?>
    <!-- end footer -->

    <!-- Nhúng file quản lý phần SCRIPT JAVASCRIPT -->
    <?php include_once(__DIR__ . '/layouts/scripts.php'); ?>

    <!-- Các file Javascript sử dụng riêng cho trang này, liên kết tại đây -->
</body>

</html>
   

Chương trình học


  1. Bức tranh tổng thể về Lập trình WEB 1
    1. Sơ đồ vận hành của một Website #1311
  2. Cài đặt môi trường Lập trình PHP 1
    1. Các chương trình cần thiết để Lập trình Web #8136
  3. PHP căn bản 6
    1. PHP là gì? Viết chương trình PHP đầu tiên #1237
    2. Các kiểu dữ liệu (data types), biến (variables), hằng số (constant), toán tử (operators) trong ngôn ngữ lập trình PHP #1242
    3. Bài tập Kiểm tra cú pháp PHP #1285
    4. Trình diễn (render) dữ liệu Đơn giản ra giao diện (HTML, CSS, JS) sử dụng PHP #8696
    5. Trình diễn (render) dữ liệu Danh sách Array ra giao diện (HTML, CSS, JS) sử dụng PHP #9564
    6. Bài tập trình diện (render) tổng hợp: hiển thị mẫu in Hóa đơn bán hàng Nền tảng #11773
  4. Cấu trúc điều khiển trong PHP
  5. PHP Nâng cao 7
    1. Cookie trong PHP #8071
    2. Session trong PHP #8070
    3. Session và Cookie trong PHP #8073
    4. Phân tách cấu trúc URL với PHP #8778
    5. API là gì? Web API là gì? #8835
    6. AJAX là gì? Kỹ thuật sử dụng AJAX với JQUERY #8846
    7. Xử lý (đọc - ghi) file trong PHP #11799
  6. Bài tập thực hành 3
    1. Xem Thêm Sửa Xóa (CRUD) với CSDL MySQL trong PHP #8049
    2. Bài tập thiết kế OOP trong PHP #10169
    3. Tạo trang hiển thị kết quả thi kết thúc môn WEB #11793
  7. Thực hiện Dự án PHP thực tế mẫu - sử dụng PHP thuần 3
    1. Sơ đồ vận hành của trang Web sử dụng PHP #7888
    2. Khởi tạo cấu trúc thư mục dự án PHP #1358
    3. Tích hợp Composer vào dự án PHP #8138
  8. Thu thập và Xử lý dữ liệu từ Client đến Server trong PHP 3
    1. Thu thập và Xử lý dữ liệu bằng Yêu cầu GET (Request GET) trong PHP #8704
    2. Thu thập và Xử lý dữ liệu bằng Yêu cầu POST (Request POST) trong PHP #8705
    3. Bài tập tạo Form Tìm kiếm Thu thập và Xử lý dữ liệu bằng Yêu cầu GET (Request GET) trong PHP #8717
  9. Thao tác với Cơ sở dữ liệu MySQL 9
    1. Quy trình (workflow) xử lý thao tác với cơ sở dữ liệu MySQL trong PHP #9623
    2. Tạo kết nối đến CSDL MySQL trong PHP #8116
    3. Thực thi câu lệnh INSERT trong PHP #8118
    4. Thực thi câu lệnh UPDATE trong PHP #8120
    5. Thực thi câu lệnh DELETE trong PHP #8122
    6. Thực thi câu lệnh SELECT trong PHP #8124
    7. Thực thi câu lệnh INSERT với FORM trong PHP #8126
    8. Thực thi câu lệnh DELETE với FORM trong PHP #8130
    9. Thực thi câu lệnh UPDATE với FORM trong PHP #8133
  10. Dự án thực tế mẫu (PHP thuần) - Trang web bán hàng trực tuyến - Thiết kế Backend 17
    1. Khái niệm về bố cục (layouts) trong thiết kế giao diện Web / App #10538
    2. Thiết kế bố cục (layouts) cho giao diện Backend sử dụng PHP thuần #8740
    3. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Index #8748
    4. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Create #9291
    5. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Delete #9293
    6. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Edit #9292
    7. Ràng buộc dữ liệu (validation) #8761
    8. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục cho Liên kết Khóa ngoại #8781
    9. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) upload hình Sản phẩm (upload đơn, mỗi lần 1 file) #8799
    10. Tạo trang Đăng nhập trong Backend #8823
    11. Tạo trang Đăng xuất trong Backend #8826
    12. Tạo Web API lấy dữ liệu báo cáo thống kê #8834
    13. Tạo trang Bảng tin (Dashboard) #8758
    14. Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - Index #8856
    15. Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - In ấn Print #8858
    16. Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - Xóa Delete #8862
    17. Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - Thêm mới Create #8861
  11. Dự án thực tế mẫu (PHP thuần) - Trang web bán hàng trực tuyến - Thiết kế Frontend 7
    1. Thiết kế bố cục (layouts) cho giao diện Frontend sử dụng PHP thuần #8868
    2. Thực hiện Trang chủ Frontend #8873
    3. Thực hiện Trang Giới thiệu About #8876
    4. Thực hiện Trang Liên hệ Contact (Có gởi mail Thông báo) #8879
    5. Thực hiện Trang Chi tiết Sản phẩm Product Detail #8944
    6. Thực hiện Trang Giỏ hàng Cart #8978
    7. Thực hiện Trang Thanh toán #9049
  12. Bảo mật Trang web PHP 2
    1. Cách hacker tấn công vào Hệ thống bằng cách sử dụng SQL Injection và Cách phòng chống của Quản trị Trang web #9063
    2. Cách hacker chèn các đoạn mã độc vào Hệ thống bằng cách sử dụng XSS (Cross site scripting) và Cách phòng chống của Quản trị Trang web #9067
  13. Tài liệu Tham khảo 11
    1. Tài liệu Tham khảo #7933
    2. Cách export (dump) cơ sở dữ liệu MySQL bằng HeidiSQL #8343
    3. Đệ quy đa cấp trong PHP #8495
    4. Tạo bố cục (layout) trang web sử dụng INCLUDE REQUIRE trong PHP #8523
    5. Bài tập tổng hợp - Tạo trang web đọc Truyện Tranh và Tiểu Thuyết Online #9006
    6. Cách triển khai Web lên Hosting free ByetHost #9052
    7. Nguyên nhân và cách xử lý lỗi Warning: Cannot modify header information - headers already sent by #9917
    8. Cách triển khai Web lên Hosting free 000WebHost #9959
    9. Cách tích hợp chứng thực tài khoản bằng Google vào trang web #9973
    10. Source code Tham khảo Learning.NenTang.vn #10394
    11. Database mẫu ví dụ Bán hàng Salomon #11808
  14. Nộp đồ án 1
    1. Hướng dẫn nộp đồ án Khóa Thiết kế Web PHP + MySQL #9224
  15. Thao tác với cơ sở dữ liệu MySQL bằng kỹ thuật AJAX 8
    1. Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Index #9777
    2. Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Create #9781
    3. Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Edit #9783
    4. Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Delete #9784
    5. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Index #9773
    6. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Create #9774
    7. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Edit #9775
    8. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Delete #9776
  16. Video Live Stream 1
    1. Thiết kế Web Backend PHP & MySQL - Buổi 1 #9964
  17. Lập trình hướng đối tượng OOP (Object Oriented Programming) trong PHP 1
    1. Khái niệm lập trình hướng đối tượng OOP (Object Oriented Programming) trong PHP #11801
Các bài học

Chương trình học

Bao gồm Module, Chương, Bài học, Bài tập, Kiểm tra...

Chương trình học


  1. Bức tranh tổng thể về Lập trình WEB 1
    1. Sơ đồ vận hành của một Website #1311
  2. Cài đặt môi trường Lập trình PHP 1
    1. Các chương trình cần thiết để Lập trình Web #8136
  3. PHP căn bản 6
    1. PHP là gì? Viết chương trình PHP đầu tiên #1237
    2. Các kiểu dữ liệu (data types), biến (variables), hằng số (constant), toán tử (operators) trong ngôn ngữ lập trình PHP #1242
    3. Bài tập Kiểm tra cú pháp PHP #1285
    4. Trình diễn (render) dữ liệu Đơn giản ra giao diện (HTML, CSS, JS) sử dụng PHP #8696
    5. Trình diễn (render) dữ liệu Danh sách Array ra giao diện (HTML, CSS, JS) sử dụng PHP #9564
    6. Bài tập trình diện (render) tổng hợp: hiển thị mẫu in Hóa đơn bán hàng Nền tảng #11773
  4. Cấu trúc điều khiển trong PHP
  5. PHP Nâng cao 7
    1. Cookie trong PHP #8071
    2. Session trong PHP #8070
    3. Session và Cookie trong PHP #8073
    4. Phân tách cấu trúc URL với PHP #8778
    5. API là gì? Web API là gì? #8835
    6. AJAX là gì? Kỹ thuật sử dụng AJAX với JQUERY #8846
    7. Xử lý (đọc - ghi) file trong PHP #11799
  6. Bài tập thực hành 3
    1. Xem Thêm Sửa Xóa (CRUD) với CSDL MySQL trong PHP #8049
    2. Bài tập thiết kế OOP trong PHP #10169
    3. Tạo trang hiển thị kết quả thi kết thúc môn WEB #11793
  7. Thực hiện Dự án PHP thực tế mẫu - sử dụng PHP thuần 3
    1. Sơ đồ vận hành của trang Web sử dụng PHP #7888
    2. Khởi tạo cấu trúc thư mục dự án PHP #1358
    3. Tích hợp Composer vào dự án PHP #8138
  8. Thu thập và Xử lý dữ liệu từ Client đến Server trong PHP 3
    1. Thu thập và Xử lý dữ liệu bằng Yêu cầu GET (Request GET) trong PHP #8704
    2. Thu thập và Xử lý dữ liệu bằng Yêu cầu POST (Request POST) trong PHP #8705
    3. Bài tập tạo Form Tìm kiếm Thu thập và Xử lý dữ liệu bằng Yêu cầu GET (Request GET) trong PHP #8717
  9. Thao tác với Cơ sở dữ liệu MySQL 9
    1. Quy trình (workflow) xử lý thao tác với cơ sở dữ liệu MySQL trong PHP #9623
    2. Tạo kết nối đến CSDL MySQL trong PHP #8116
    3. Thực thi câu lệnh INSERT trong PHP #8118
    4. Thực thi câu lệnh UPDATE trong PHP #8120
    5. Thực thi câu lệnh DELETE trong PHP #8122
    6. Thực thi câu lệnh SELECT trong PHP #8124
    7. Thực thi câu lệnh INSERT với FORM trong PHP #8126
    8. Thực thi câu lệnh DELETE với FORM trong PHP #8130
    9. Thực thi câu lệnh UPDATE với FORM trong PHP #8133
  10. Dự án thực tế mẫu (PHP thuần) - Trang web bán hàng trực tuyến - Thiết kế Backend 17
    1. Khái niệm về bố cục (layouts) trong thiết kế giao diện Web / App #10538
    2. Thiết kế bố cục (layouts) cho giao diện Backend sử dụng PHP thuần #8740
    3. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Index #8748
    4. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Create #9291
    5. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Delete #9293
    6. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục Phẳng - Edit #9292
    7. Ràng buộc dữ liệu (validation) #8761
    8. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) cho danh mục cho Liên kết Khóa ngoại #8781
    9. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) upload hình Sản phẩm (upload đơn, mỗi lần 1 file) #8799
    10. Tạo trang Đăng nhập trong Backend #8823
    11. Tạo trang Đăng xuất trong Backend #8826
    12. Tạo Web API lấy dữ liệu báo cáo thống kê #8834
    13. Tạo trang Bảng tin (Dashboard) #8758
    14. Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - Index #8856
    15. Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - In ấn Print #8858
    16. Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - Xóa Delete #8862
    17. Tạo chức năng Quản lý Đơn hàng dạng Master Detail (lưu một dòng cha và nhiều dòng con) - Thêm mới Create #8861
  11. Dự án thực tế mẫu (PHP thuần) - Trang web bán hàng trực tuyến - Thiết kế Frontend 7
    1. Thiết kế bố cục (layouts) cho giao diện Frontend sử dụng PHP thuần #8868
    2. Thực hiện Trang chủ Frontend #8873
    3. Thực hiện Trang Giới thiệu About #8876
    4. Thực hiện Trang Liên hệ Contact (Có gởi mail Thông báo) #8879
    5. Thực hiện Trang Chi tiết Sản phẩm Product Detail #8944
    6. Thực hiện Trang Giỏ hàng Cart #8978
    7. Thực hiện Trang Thanh toán #9049
  12. Bảo mật Trang web PHP 2
    1. Cách hacker tấn công vào Hệ thống bằng cách sử dụng SQL Injection và Cách phòng chống của Quản trị Trang web #9063
    2. Cách hacker chèn các đoạn mã độc vào Hệ thống bằng cách sử dụng XSS (Cross site scripting) và Cách phòng chống của Quản trị Trang web #9067
  13. Tài liệu Tham khảo 11
    1. Tài liệu Tham khảo #7933
    2. Cách export (dump) cơ sở dữ liệu MySQL bằng HeidiSQL #8343
    3. Đệ quy đa cấp trong PHP #8495
    4. Tạo bố cục (layout) trang web sử dụng INCLUDE REQUIRE trong PHP #8523
    5. Bài tập tổng hợp - Tạo trang web đọc Truyện Tranh và Tiểu Thuyết Online #9006
    6. Cách triển khai Web lên Hosting free ByetHost #9052
    7. Nguyên nhân và cách xử lý lỗi Warning: Cannot modify header information - headers already sent by #9917
    8. Cách triển khai Web lên Hosting free 000WebHost #9959
    9. Cách tích hợp chứng thực tài khoản bằng Google vào trang web #9973
    10. Source code Tham khảo Learning.NenTang.vn #10394
    11. Database mẫu ví dụ Bán hàng Salomon #11808
  14. Nộp đồ án 1
    1. Hướng dẫn nộp đồ án Khóa Thiết kế Web PHP + MySQL #9224
  15. Thao tác với cơ sở dữ liệu MySQL bằng kỹ thuật AJAX 8
    1. Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Index #9777
    2. Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Create #9781
    3. Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Edit #9783
    4. Tạo API cho chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Delete #9784
    5. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Index #9773
    6. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Create #9774
    7. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Edit #9775
    8. Tạo chức năng CRUD (Xem-Read, Thêm-Create, Sửa-Edit, Xóa-Delete) bằng kỹ thuật AJAX cho danh mục Phẳng - Delete #9776
  16. Video Live Stream 1
    1. Thiết kế Web Backend PHP & MySQL - Buổi 1 #9964
  17. Lập trình hướng đối tượng OOP (Object Oriented Programming) trong PHP 1
    1. Khái niệm lập trình hướng đối tượng OOP (Object Oriented Programming) trong PHP #11801

Bài học trước Bài học tiếp theo