Ánh Văn Hóa Blog

Code assignment PHP 1 - FPT Polytechnic

Code assignment PHP 1 - FPT Polytechnic
Nguyễn Văn Ánh

Nguyễn Văn Ánh

blogger

Publish: 10 thg 8, 2023

Bạn đã làm xong assignment php 1 chưa ? 😁😁😁

Full source code ở cuối

Trong bài viết này mình sẽ chia sẻ cho các bạn vể cấu trúc thư mục & code assignment php 1 tại cao đẳng FPT của mình, với việc môn php 1 thì khá là cơ bản.

Cấu trúc thư mục

Đây chỉ là cách cấu trúc thư muc của mình các bạn có thể tùy chỉnh cho đúng với các code của các bạn nhé

📦assignment
 ┣ 📂account
 ┣ 📂admin
 ┃ ┣ 📂manage-blog
 ┃ ┣ 📂manage-product
 ┃ ┗ 📜index.php
 ┣ 📂assets
 ┣ 📂blog
 ┣ 📂ckeditor
 ┣ 📂config
 ┃ ┗ 📜connectDB.php
 ┣ 📂product
 ┃ ┗ 📜index.php
 ┗ 📜index.php
  • Folder assignment để chứa toàn bộ code và có 1 file index.php là trang chủ của website.
  • Folder account chứa giao diện liên quan đến người dùng như đăng nhập, đăng ký.
  • Folder blog, product chứa giao diện liên quan đến bài viết cũng như sản phẩm.
  • Folder config chứa các các cấu hình, kết nối database.
  • Folder ckeditor là thư viện edit text
  • Folder assets chứa các file như là css, js, image,
  • Folder admin quản lý folder liên quan đến quản trị viên như thêm sửa xóa sản phẩm ...

Giao diện

Về giao diện các bạn có thể tải template có sẵn ở trên mạng về, mình đang tích hợp tailwindcss đối với môn php 1 bạn hãy tự code thuẩn nhé, môn này mình không khuyến khích các bạn sử dụng thư viện giống mình.

Kết nối database

Tất nhiên rồi hầu hết php sẽ đi cùng mysql, tại file connectDB.php bạn bạn hãy xử lý kết nối database nhé.

$dbname = 'your-name-database';
try {
    $dataBase = new PDO("mysql:host=localhost; dbname=$dbname; charset=utf8", 'root', '');
} catch (\Throwable $th) {
    echo "Connect DB fail";
}

Bạn hãy thay thế your-name-database thành tên database của bạn thôi là được.

Trang chủ

Tại trang chủ các bạn cần xử lý được hiển thị được category (danh mục) và product (sản phẩm), các bạn hãy tạo cho mình 1 file index.php, sau đó dán giao diện của các bạn và tiến hành kết nối DB.

// Connect DB
include_once('./config/connectDB.php');

Sử dụng include_once hoặc include để nhúng file connectDB.php vào trang chủ

Tiếp theo hãy xử lý hiển thị danh mục, lấy tất cả danh mục trong database và hiện thị.

$selectCategory = "SELECT * FROM CATEGORYS";
$category = $dataBase->query($selectCategory);
foreach ($category as $key => $value) {
    // Xử lý hiện thị danh mục
}

Hiện thị sản phẩm cũng tương tự như vậy, các trang sản phẩm, trang bài viết cũng chỉ cần lấy dữ liệu từ database ra rồi hiển thị là xong SELECT * FROM NAME-TABLE

Đăng nhập

Cần có một trang đăng nhập vào trang quản trị, tại đây các bạn cần check xem người quản trị đã đăng nhập hay chưa nếu đã đăng nhập thì điều hướng đến trang quản trị còn chưa hãy tiếp tục đăng nhập và xử lý đăng nhập.

Đừng quên là phải connect database nữa

Check đăng nhập

session_start();
// Connect DB
include_once('../config/connectDB.php');
if (isset($_SESSION['user'])) {
    // điều hường về trang quản trị
}

session_start là hàm có sẵn cần khai báo để sử dụng $_SESSION, isset là hàm check xem một biến có giá trị hay không.

Logic đăng nhập

if (isset($_POST['login'])) {
    $password = $_POST['password'];
    $username = $_POST['user'];
    $selectAccount = "SELECT * FROM ACCOUNT WHERE USER_NAME='$user'";
    $account = $dataBase->query($selectAccount)->fetch();
    if ($account) {
        if ($account['password'] !== $password) {
            // Thông báo sai mật khẩu
        } else {
            $_SESSION['user'] = $user;
            // Điều hướng về trang quản trị
        }
    } else {
        // Thông báo sai tên đăng nhập
    }
}

Chúng ta cần kiểm tra xem người đó đã bấm vào nút Login hay chưa, rồi xử lý tiếp việc lấy giá trị usernamepassword từ form mà người dùng điền, kiểu tra trong database xem có trùng khới hay không từ đó thông báo lỗi hoặc thành công đến người dùng.

Trang quản trị

Trang quản trị chỉ cần cơ bản là thêm, sửa, xóa sản phẩm và bài viết, tải được ảnh, tích hợp ckeditor, là xong trang quản trị.

Thêm sản phẩm

$btn_create = isset($_POST['btn_create']);
if ($btn_create) {
    $title = $_POST['title'];
    $price = $_POST['price'];
    $price_sale = $_POST['price-sale'];
    $flash_sale = $_POST['flash-sale'];
    $cate_id = $_POST['cate-id'];
    $technique = $_POST['technique'];
    $description = $_POST['description'];
    $nameImage = $_FILES['thumbnail']['name'];
    $tmpImage = $_FILES['thumbnail']['tmp_name'];
    move_uploaded_file($tmpImage, "../../../images/" . $nameImage);
    $insetProduct = "INSERT INTO PRODUCTS VALUE(NULL, '$title', $price, 'images/$nameImage', $price_sale, '$technique', '$description', $flash_sale, $cate_id)";
    $result = $dataBase->prepare($insetProduct)->execute();
    if ($result) {
        // Điều hướng về tran danh sách sản phẩm
    } else {
        // Báo lỗi thất bại
    }
}

Thực hiện lấy dữ liệu và thêm vào database

Tích hợp ckeditor

Nhúng thư viện

<script src="../../ckeditor/ckeditor.js"></script>

Xử lý ckeditor

<script>
    CKEDITOR.replace('description');
</script>

Vậy là nhúng xong thư viện ckeditor các bạn thấy đơn giản không ?

Công việc còn lại của bạn là xử lý update bài viết nó tương tự như thêm chỉ khác câu lệnh sql thôi và áp dụng tất cả cái trên cho CRUD bài viết là hoàn thành.

Assignment php

Phần Kết

Trong kết luận, source code assignment PHP 1 của mình đã đủ các chức năng các bạn co thể cập nhập thêm cả tiến, nếu đang tìm kiếm assignment thì chắc các bạn cũng sắp thi mình chúc các bạn thì tốt vượt qua kỳ thi nhé.