IMG-LOGO
×

Hướng dẫn cài đặt môi trường

[Bài Viết] Hướng dẫn cài composer [Bài Viết] Hướng dẫn tạo dự án Laravel đầu tay. [Bài Viết] Hướng dẫn cấu hình cơ sở dữ liệu và bật chức năng auth có sẵn trong Laravel [Bài Viết] Hướng dẫn cài theme Acacha AdminLTE cho Laravel [Bài Viết] Hướng dẫn tắt debug khi upload dự án laravel lên HOST [Video] Hướng dẫn cài đặt môi trường + tạo dự án + Tìm hiểu Route qua ví dụ - Lập trình Laravel [Video] Hướng dẫn cài đặt dự án Laravel + Cài đặt chức năng Auth (login + register) trong Laravel

Tìm hiểu Route & View & Controller

[Video] Tìm hiểu Route trong Laravel + Học lập trình laravel qua ví dụ Hello World, ax+b=0, Hiển thị danh sách sinh viên [Video] Tìm hiểu Route qua ví dụ quản lý sinh viên - Laravel [Video] Hướng dẫn tìm hiểu Route - Controller - View trong Laravel qua ví dụ [Video] Lập trình Laravel - Truyền dữ liệu từ Controller qua View - Ví dụ Hello World trong Laravel Phần 1 [Video] Lập trình Laravel - Truyền dữ liệu từ Controller qua View - Ví dụ Tính giai thừa trong Laravel Phần 2 [Video] Lập trình Laravel - Truyền dữ liệu từ Controller qua View - Ví dụ hiển thị danh sách sinh viên trong Laravel Phần 3

GET/POST trong Laravel

[Video] Tìm hiểu GET/POST trong Laravel qua ví dụ nhập thông tin người dùng - Lập trình Laravel [Video] Quản lý sinh viên bằng Laravel - Lập trình Laravel

Layout - Blade

[Video] Tìm hiểu Route - Blade (nhung css/js/photos) - cú pháp Blade - Xử lý GET/POST trong Laravel [Video] Hướng dẫn tìm hiểu layout trong Laravel - qua ví dụ tạo website tin tức - Lập Trình Laravel

Kết nối CSDL - Laravel

[Video] Hướng dẫn tìm hiểu view, migration, seeder, db - laravel - Qua ví dụ quản lý sinh viên [Video] Học Laravel qua ví dụ thêm & hiển thị tài khoản người dung - DB::Insert - DB::get - Paginate - Khoá Học Laravel [Video] - Chương trình quản lý điểm danh Aptech - Lập trình Laravel - Lập trình PHP/Laravel [Video] Bài tập quản lý sách bằng Laravel - Full Source Code quản lý sách - Lập trình Laravel [Video] - Tạo 1 POS bán hàng cho siêu thị - Supper Market - Lập trình Laravel [Video] Hướng dẫn tim hiểu Pagination + model qua ví dụ quản lý sinh viên - Lập trình Laravel

Phân quyền - Chức năng nâng cao

[Video] - Tìm hiểu Auth trong Laravel [Video] Phân Quyền-Hướng dẫn viết chức năng phân quyền người dùng theo role Lâp Trình PHP/Laravel [Video] API Resful Laravel - Hướng dẫn tạo API Resful bằng PHP/Laravel - Khóa học lập trình PHP/Laravel

Thực Chiến: Web bán hàng

[Video] Hướng dẫn tạo dự án super market - phần 1 - Laravel [Video] Hướng dẫn tạo dự án super market - phần 2- laravel [Video] Tạo giở hàng - học lập trình laravel qua project- Phần 3 - laravel




Trang Chủ Học Laravel Ôn tập - Chương trình quản lý sách + danh mục sách - Lập trình PHP, Laravel

Ôn tập - Chương trình quản lý sách + danh mục sách - Lập trình PHP, Laravel

by GokiSoft.com - 18:50 30/10/2021 3,359 Lượt Xem

Thiết kế website bằng laravel gồm các chức năng sau.

- Tạo 2 bảng : danh mục (id, tên danh mục), sách (id, id danh mục, tiêu đề, giá, href_param, nội dung, ngày tạo, ngày cập nhật)

- Viết chương trình gồm các chức năng sau

1. Thêm sửa xoá danh mục

2. Thêm sửa xoá sách

- Viết page hiển thị danh sách sách, click vào sách hiển thị trang chi tiết.

Bình luận



Chia sẻ từ lớp học

thienphu [T1907A]

Ngày viết: 09:31 08/07/2020


#ModalSeeder.php


<?php

use Illuminate\Database\Seeder;

class ModalSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('author')->insert([
            // [
            //     'nickname' => 'smileahjhj',
            //     'fullname' => 'do thien phu',
            //     'email' => '[email protected]',
            //     'address' => 'Ha noi',
            //     'phone_number' => '123456',
            //     'created_at' => date('Y-m-d H:i:s'),
            //     'updated_at' => date('Y-m-d H:i:s')],
            // [
            //     'nickname' => 'daikute',
            //     'fullname' => 'do thien phu',
            //     'email' => '[email protected]',
            //     'address' => 'Ha noi',
            //     'phone_number' => '123456',
            //     'created_at' => date('Y-m-d H:i:s'),
            //     'updated_at' => date('Y-m-d H:i:s')],
            // [
            //     'nickname' => 'cristiano',
            //     'fullname' => 'do thien phu',
            //     'email' => '[email protected]',
            //     'address' => 'Ha noi',
            //     'phone_number' => '123456',
            //     'created_at' => date('Y-m-d H:i:s'),
            //     'updated_at' => date('Y-m-d H:i:s')],
            // [
            //     'nickname' => 'yanio',
            //     'fullname' => 'do thien phu',
            //     'email' => '[email protected]',
            //     'address' => 'Ha noi',
            //     'phone_number' => '123456',
            //     'created_at' => date('Y-m-d H:i:s'),
            //     'updated_at' => date('Y-m-d H:i:s')],
            // [
            //     'nickname' => 'bicassto',
            //     'fullname' => 'do thien phu',
            //     'email' => '[email protected]',
            //     'address' => 'Ha noi',
            //     'phone_number' => '123456',
            //     'created_at' => date('Y-m-d H:i:s'),
            //     'updated_at' => date('Y-m-d H:i:s')],
            // [
            //     'nickname' => 'chicharit',
            //     'fullname' => 'do thien phu',
            //     'email' => '[email protected]',
            //     'address' => 'Ha noi',
            //     'phone_number' => '123456',
            //     'created_at' => date('Y-m-d H:i:s'),
            //     'updated_at' => date('Y-m-d H:i:s')],
            // [
            //     'nickname' => 'bicassto5',
            //     'fullname' => 'do thien phu',
            //     'email' => '[email protected]',
            //     'address' => 'Ha noi',
            //     'phone_number' => '123456',
            //     'created_at' => date('Y-m-d H:i:s'),
            //     'updated_at' => date('Y-m-d H:i:s')],
            // [
            //     'nickname' => 'tiket01',
            //     'fullname' => 'do thien phu',
            //     'email' => '[email protected]',
            //     'address' => 'Ha noi',
            //     'phone_number' => '123456',
            //     'created_at' => date('Y-m-d H:i:s'),
            //     'updated_at' => date('Y-m-d H:i:s')],
            // [
            //     'nickname' => 'maria',
            //     'fullname' => 'do thien phu',
            //     'email' => '[email protected]',
            //     'address' => 'Ha noi',
            //     'phone_number' => '123456',
            //     'created_at' => date('Y-m-d H:i:s'),
            //     'updated_at' => date('Y-m-d H:i:s')],
            // [
            //     'nickname' => 'osaka',
            //     'fullname' => 'do thien phu',
            //     'email' => '[email protected]',
            //     'address' => 'Ha noi',
            //     'phone_number' => '123456',
            //     'created_at' => date('Y-m-d H:i:s'),
            //     'updated_at' => date('Y-m-d H:i:s')],
            [
                'nickname' => 'tokura',
                'fullname' => 'do thien phu',
                'email' => '[email protected]',
                'address' => 'Ha noi',
                'phone_number' => '123456',
                'created_at' => date('Y-m-d H:i:s'),
                'updated_at' => date('Y-m-d H:i:s')],
        ]);
    }
}


#2020_07_06_133011_create_author_table.php


<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateAuthorTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('author', function (Blueprint $table) {
            $table->string('nickname',25);
            $table->primary('nickname');
            $table->string('fullname',150);
            $table->string('email',150);
            $table->string('address',250);
            $table->string('phone_number',15);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('author');
    }
}


#2020_07_07_001011_create_book_table.php


<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateBookTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('book', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title',250);
            $table->text('content');
            $table->float('price');
            $table->string('nxb',50);
            $table->string('nickname',25);
            $table->foreign('nickname')->references ('nickname')->on('author');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('book');
    }
}


#AuthorController.php


<?php

namespace App\Http\Controllers\Modal;

use App\Http\Controllers\Controller;
use DB;
use Illuminate\Http\Request;

class AuthorController extends Controller
{
    public function index(Request $request)
    {
        //hiển thị theo ý muốn khi lấy dư liệu về
        $userList = DB::table('author')
        ->orderBy('created_at','asc') 
        ->paginate(10);
        return view('Modal.author.index')->with([
            'userList' => $userList,
        ]);

    }
    public function viewAdd(Request $request)
    {
        return view('Modal.author.viewadd');
    }
    public function postAddAuthor(Request $request)
    {
        //check validate
        $nickname = $request->nickname;
        $authorList = DB::table('author')
            ->where('nickname', $nickname)
            ->get();
        if ($authorList != null && count($authorList) > 0) {
            return 'error';
        }
        DB::table('author')->insert([
            'nickname' => $request->nickname,
            'fullname' => $request->fullname,
            'email' => $request->email,
            'address' => $request->address,
            'phone_number' => $request->phone_number,
            'created_at' => date('Y-m-d H:i:s'),
            'updated_at' => date('Y-m-d H:i:s'),
        ]);
        return redirect()->route('viewAuthorList');

    }
}


#BookController.php


<?php

namespace App\Http\Controllers\Modal;

use App\Http\Controllers\Controller;
use DB;
use Illuminate\Http\Request;

class BookController extends Controller
{
    public function index(Request $request)
    {
        //hiển thị theo ý muốn khi lấy dư liệu về
        $BookList = DB::table('book')
            ->leftJoin('author', 'author.nickname', '=', 'book.nickname') // nối bảng author vs book
            ->select('book.*', 'author.fullname')
            ->orderBy('author.created_at', 'asc')
            ->paginate(10);
        return view('Modal.book.index')->with([
            'index' => 1,
            'BookList' => $BookList,
        ]);

    }
    public function viewAdd(Request $request)
    {
        $authorList = DB::table('author')
            ->select('nickname', 'fullname') // lay dữ liệu chỉ cột nickname,fullname
            ->orderBy('created_at', 'asc')
            ->get();
        return view('Modal.book.viewaddbook')->with([
            'authorList' => $authorList,
        ]);
    }
    public function postAddBook(Request $request)
    {
        DB::table('book')->insert([
            'title' => $request->title,
            'content' => $request->content,
            'price' => $request->price,
            'nxb' => $request->nxb,
            'nickname' => $request->nickname,
            'created_at' => date('Y-m-d H:i:s'),
            'updated_at' => date('Y-m-d H:i:s'),
        ]);
        return redirect()->route('viewBookList');
    }
    public function deletedIdBook(Request $request)
    {
        DB::table('book')->where('id', $request->id)->delete();
        return redirect()->route('viewBookList');
    }
    public function editbook(Request $request)
    {
        $authorList = DB::table('author')
            ->select('nickname')
            ->orderBy('created_at', 'asc')
            ->get();
        $book = DB::table('book')
            ->where('id', $request->id)
            ->get();
        $book1 = $book[0];
        return view('Modal.book.editbook')->with([
            'authorList' => $authorList,
            'book1' => $book1,
        ]);
    }
    public function updateBook(Request $request)
    {

        //cột nào update mới add vào
        DB::table('book')->where('id', $request->id)
            ->update([
                'title' => $request->title,
                'content' => $request->content,
                'price' => $request->price,
                'nxb' => $request->nxb,
                'nickname' => $request->nickname,
                'updated_at' => date('Y-m-d H:i:s'),
            ]);

        return redirect()->route('viewBookList');

    }
    public function searchBook(Request $request)
    {
        $timkiem = $request->get('timkiem');
        $BookList = DB::table('book')
            ->where('title', 'like', '%' . $timkiem . '%')
            ->paginate(5);
        return view('Modal.book.index')->with([
            'index' => 1,
            'BookList' => $BookList,
        ]);

    }
}


#index.blade.php


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Show List Author</title>
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
    <div class='container'>
    <h1><center>Author Manage</center></h1>
        <table class="table table-bordered">
        <!-- <button class='btn btn-success'  onclick="window.open('{{route('viewadd')}}')">Add Author</button> -->
        <button class='btn btn-success'  onclick="window.location=('{{route('viewadd')}}')">Add Author</button>
            <thead>
                <tr>
                    <th>nickname</th>
                    <th>fullname</th>
                    <th>email</th>
                    <th>address</th>
                    <th>phone_number</th>
                    <th>created_at</th>
                    <th>updated_at</th>
                    <th></th>
                    <th></th>

                </tr>
            </thead>
            <tbody>
                @foreach($userList as $item)
                    <tr>
                        <td>{{ $item->nickname}}</td>
                        <td>{{ $item->fullname}}</td>
                        <td>{{ $item->email}}</td>
                        <td>{{ $item->address}}</td>
                        <td>{{ $item->phone_number}}</td>
                        <td>{{ $item->created_at}}</td>
                        <td>{{ $item->updated_at}}</td>
                        <td><button class="btn btn-warning">Edit</button></td>
                        <td><button class="btn btn-danger">Deleted</button></td>
                    </tr>

                @endforeach
            </tbody>
        </table>
        <!-- câu lệnh phân trang -->
        {!! $userList->links() !!}

    </div>
</body>
</html>


#viewadd.blade.php


<!DOCTYPE html>
<html>
<head>
	<title>Registation Form * Form Tutorial</title>
	<!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">

	<!-- jQuery library -->
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

	<!-- Popper JS -->
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

	<!-- Latest compiled JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>
	<div class="container">
		<div class="panel panel-primary">
			<div class="panel-heading">
				<h2 class="text-center">Add Author</h2>
			</div>
			<div class="panel-body">
				<form action="{{route('postAdd')}}" method="POST">
				<div class="form-group">
				{{ csrf_field()}}
				  <label for="usr">NickName:</label>
				  <input required="true" type="text" class="form-control" name='nickname' id="usr">
				</div>
				<div class="form-group">
				  <label for="fullname">FullName:</label>
				  <input required="true" type="text" class="form-control" name='fullname'>
				</div>
				<div class="form-group">
				  <label for="email">Email:</label>
				  <input type="email" class="form-control" name='email'>
				</div>
				<div class="form-group">
				  <label for="pwd">Address:</label>
				  <input required="true" type="text" class="form-control" name="address">
				</div>
				<div class="form-group">
				  <label for="phone_number">Phone Number:</label>
				  <input required="true" type="text" class="form-control" name='phone_number'>
				</div>

				<button class="btn btn-success">Register</button>
				</form>
			</div>
		</div>
	</div>
</body>
</html>


#editbook.blade.php


<!DOCTYPE html>
<html>
<head>
	<title>Update Book</title>
	<!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">

	<!-- jQuery library -->
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

	<!-- Popper JS -->
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

	<!-- Latest compiled JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>
	<div class="container">
		<div class="panel panel-primary">
			<div class="panel-heading">
				<h2 class="text-center">Update Book</h2>
			</div>
			<div class="panel-body">
				<form action=" {{route('smileahjhj')}} " method="POST">
				<div class="form-group">
                <input required="true" type="text" class="form-control" name='id' value="{{$book1->id}}" hidden="">
				{{ csrf_field()}}
				  <label for="usr">Title:</label>
				  <input required="true" type="text" class="form-control" name='title' value="{{$book1->title}}" >
				</div>
				<div class="form-group">
				  <label for="content">Content:</label>
				  <input required="true" type="text" class="form-control" name='content'value="{{$book1->content}}">
				</div>
				<div class="form-group">
				  <label for="price">Price:</label>
				  <input type="text" class="form-control" name='price' value="{{$book1->price}}">
				</div>
				<div class="form-group">
				  <label for="pwd">NXB:</label>
				  <input required="true" type="text" class="form-control" name="nxb" value="{{$book1->nxb}}">
				</div>
                
				 <div class="form-group">
				  <label for="nickname">Nick name:</label>
				  <select name="nickname" class="form-control">
                  <option value="{{$book1->nickname}}">{{$book1->nickname}}</option>
                  @foreach($authorList as $author)
						<option value="{{$author->nickname}}">{{$author->nickname}}</option>
					  @endforeach
				  </select>
				</div> 

				<button class="btn btn-success">Update</button>
				</form>
			</div>
		</div>
	</div>
</body>
</html>


#index.blade.php


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Book Manage</title>
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
    <div class='container'>
    <h1><center>Book Manage</center></h1>
        <table class="table table-bordered">
        <!-- <button class='btn btn-success'  onclick="window.open('{{route('viewadd')}}')">Add Author</button> -->

        <form method="get" action="{{route('searchBook')}}">
					<input type="text" name="timkiem" class="form-control" style="margin-top: 15px; margin-bottom: 15px;" placeholder="Tìm kiếm theo tên">
				</form>
            <thead>
                <tr>
                    <th>STT</th>
                    <th>title</th>
                    <th>content</th>
                    <th>price</th>
                    <th>nickname</th>
                    
                    <th>created_at</th>
                    <th>updated_at</th>
                    <th></th>
                    <th></th>

                </tr>
            </thead>
            <tbody>
                @foreach($BookList as $item)
                    <tr>
                        <td>{{$index++}}</td>
                        <td>{{ $item->title}}</td>
                        <td>{{ $item->content}}</td>
                        <td>{{ number_format($item->price)}}</td>
                        <td>{{ $item->nickname}}</td>
                        
                        <td>{{ $item->created_at}}</td>
                        <td>{{ $item->updated_at}}</td>
                        <td><button class="btn btn-warning" onclick="window.location=('/modal/book/editBook/{{ $item->id}}')">Edit</button></td>
                        <!-- deletedIdBook -->
                        <td><a href="/modal/book/deletedIdBook/{{ $item->id}}"><button class="btn btn-danger">Deleted</button></a></td>


                    </tr>

                @endforeach
            </tbody>
        </table>
        <!-- câu lệnh phân trang -->
        {!! $BookList->links() !!}
        <button class='btn btn-success'  onclick="window.location=('{{route('viewaddbook')}}')">Add Book</button>
    </div>
</body>
</html>


#test.blade.php


u뚀


#viewaddbook.blade.php


<!DOCTYPE html>
<html>
<head>
	<title>Add Book</title>
	<!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">

	<!-- jQuery library -->
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

	<!-- Popper JS -->
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

	<!-- Latest compiled JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>
	<div class="container">
		<div class="panel panel-primary">
			<div class="panel-heading">
				<h2 class="text-center">Add Author</h2>
			</div>
			<div class="panel-body">
				<form action="{{route('postAddBook')}}" method="POST">
				<div class="form-group">
				{{ csrf_field()}}
				  <label for="usr">Title:</label>
				  <input required="true" type="text" class="form-control" name='title' >
				</div>
				<div class="form-group">
				  <label for="content">Content:</label>
				  <input required="true" type="text" class="form-control" name='content'>
				</div>
				<div class="form-group">
				  <label for="price">Price:</label>
				  <input type="text" class="form-control" name='price'>
				</div>
				<div class="form-group">
				  <label for="pwd">NXB:</label>
				  <input required="true" type="text" class="form-control" name="nxb">
				</div>

				<div class="form-group">
				  <label for="nickname">Nick name:</label>
				  <select name="nickname" class="form-control">
				  	@foreach($authorList as $author)
						<option value="{{$author->nickname}}">{{$author->fullname}}</option>
					  @endforeach
				  </select>
				</div>

				<button class="btn btn-success">Register</button>
				</form>
			</div>
		</div>
	</div>
</body>
</html>


#modal.php


<?php
Route::group(['prefix' => '/modal/author'], function () {
    Route::get('/index', 'Modal\[email protected]')->name('viewAuthorList');

    Route::get('/view_add', 'Modal\[email protected]')->name('viewadd');
    Route::post('/post_addAuthor', 'Modal\[email protected]')->name('postAdd');
});

Route::group(['prefix' => '/modal/book'], function () {
    Route::get('/index', 'Modal\[email protected]')->name('viewBookList');

    Route::get('/view_add', 'Modal\[email protected]')->name('viewaddbook');
    Route::post('/post_addBook', 'Modal\[email protected]')->name('postAddBook');
    Route::get('/deletedIdBook/{id}', 'Modal\[email protected]')->name('deletedIdBook');
    Route::get('/editBook/{id}', 'Modal\[email protected]')->name('editbook');
    Route::post('/updateBook', 'Modal\[email protected]')->name('smileahjhj');
    Route::get('/search', 'Modal\[email protected]')->name('searchBook');
});


Trương Công Vinh [T1907A]

Ngày viết: 15:27 04/07/2020

book.php


<?php

use Illuminate\Support\Facades\Route;
Route::group(['prefix'=>'book'],function(){
    Route::get('/inputbook','book\[email protected]')->name('inputBook');
Route::get('/inputcategory','book\[email protected]')->name('inputCategory');
Route::get('/displaybook','book\[email protected]')->name('displayBook');
Route::get('/displaybookofcategory/{id}','book\[email protected]');
Route::post('/serchBook','book\[email protected]')->name('serch');


Route::get('/displaycategory','book\[email protected]')->name('displayCategory');
Route::get('/displaycategoryofid/{id}','book\[email protected]');
Route::post('/insertbook','book\[email protected]')->name('insertbook');
Route::post('/insertcategory','book\[email protected]')->name('insertcategory');


Route::get('/main','book\[email protected]')->name('main');
Route::get('/main','book\[email protected]')->name('main');
Route::post('/mainsearch','book\[email protected]')->name('mainsearch');
Route::get('/mainbookofcategory/{id}','book\[email protected]');
Route::get('/bookdetail/{href_param}.html','book\[email protected]');


});
?>

2020_07_03_081327_create_book_table.php

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateBookTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('category', function (Blueprint $table) {
            $table->increments('id');
            $table->string('category');
        });
        Schema::create('book', function (Blueprint $table) {
            $table->increments('id');
            $table->unsignedInteger('categoryId');
            $table->foreign('categoryId')->references('id')->on('category');
            $table->string('title');
            $table->integer('price');
            $table->string('href_param');
            $table->string('content');
            $table->date('create_date');
            $table->date('update_date');
        });
        
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('book');
    }
}

bookController.php
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
</head>
<style>
  .mt-3{
    min-height: 580px;
  }
</style>
<body>
    <!-- Navigation -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
      <div class="container">
        <a class="navbar-brand" href="{{ route('main') }}"><i class="fas fa-heart"></i>Book -.-'</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarResponsive">
          <ul class="navbar-nav ml-auto">
            <li class="nav-item active">
              <a class="nav-link" href="{{ route('main') }}">Home
              </a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">About</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="{{ route('inputBook') }}">Admin
                <span class="sr-only">(current)</span>
              </a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="{{ route('inputBook') }}">Book</a>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  <br><br><br>
    <!-- Page Content -->
<div class="container mt-3">
  <h1>Input Category</h1>
<br>
  <form method="POST" action="{{ route('insertcategory') }}">
     {{ csrf_field() }}
      <div class="input-group mb-3">
        <div class="input-group-prepend">
          <span class="input-group-text">tên danh mục</span>
        </div>
        <input type="text" class="form-control" name="category">
      </div>
      <button type="submit" class="btn btn-primary">Save</button>


  </form>
 
</div>
<footer class="py-5 bg-dark" clear="bottom">
  <div class="container">
    <p class="m-0 text-center text-white">Quadeptrai<i class="fas fa-heart"></i>book.com</p>
  </div>
  <!-- /.container -->
</footer>
</body>
</html>


bookview.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
</head>
<style>
  .mt-3{
    min-height: 580px;
  }
</style>
<body>
    <!-- Navigation -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
      <div class="container">
        <a class="navbar-brand" href="{{ route('main') }}"><i class="fas fa-heart"></i>Book -.-'</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarResponsive">
          <ul class="navbar-nav ml-auto">
            <li class="nav-item active">
              <a class="nav-link" href="{{ route('main') }}">Home
              </a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">About</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="{{ route('inputBook') }}">Admin
                <span class="sr-only">(current)</span>
              </a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="{{ route('inputBook') }}">Book</a>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  <br><br><br>
    <!-- Page Content -->
<div class="container mt-3">
  <h1>Input Category</h1>
<br>
  <form method="POST" action="{{ route('insertcategory') }}">
     {{ csrf_field() }}
      <div class="input-group mb-3">
        <div class="input-group-prepend">
          <span class="input-group-text">tên danh mục</span>
        </div>
        <input type="text" class="form-control" name="category">
      </div>
      <button type="submit" class="btn btn-primary">Save</button>


  </form>
 
</div>
<footer class="py-5 bg-dark" clear="bottom">
  <div class="container">
    <p class="m-0 text-center text-white">Quadeptrai<i class="fas fa-heart"></i>book.com</p>
  </div>
  <!-- /.container -->
</footer>
</body>
</html>


inPutBook.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
</head>
<style>
  .mt-3{
    min-height: 580px;
  }
</style>
<body>
    <!-- Navigation -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
      <div class="container">
        <a class="navbar-brand" href="{{ route('main') }}"><i class="fas fa-heart"></i>Book -.-'</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarResponsive">
          <ul class="navbar-nav ml-auto">
            <li class="nav-item active">
              <a class="nav-link" href="{{ route('main') }}">Home
              </a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">About</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="{{ route('inputBook') }}">Admin
                <span class="sr-only">(current)</span>
              </a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="{{ route('inputBook') }}">Book</a>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  <br><br><br>
    <!-- Page Content -->
<div class="container mt-3">
  <h1>Input Category</h1>
<br>
  <form method="POST" action="{{ route('insertcategory') }}">
     {{ csrf_field() }}
      <div class="input-group mb-3">
        <div class="input-group-prepend">
          <span class="input-group-text">tên danh mục</span>
        </div>
        <input type="text" class="form-control" name="category">
      </div>
      <button type="submit" class="btn btn-primary">Save</button>


  </form>
 
</div>
<footer class="py-5 bg-dark" clear="bottom">
  <div class="container">
    <p class="m-0 text-center text-white">Quadeptrai<i class="fas fa-heart"></i>book.com</p>
  </div>
  <!-- /.container -->
</footer>
</body>
</html>

bookDetail.blade.php


<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
</head>
<body>
    <!-- Navigation -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
      <div class="container">
        <a class="navbar-brand" href="{{ route('main') }}"><i class="fas fa-heart"></i>Book -.-'</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarResponsive">
          <ul class="navbar-nav ml-auto">
            <li class="nav-item active">
              <a class="nav-link" href="{{ route('main') }}">Home
              </a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">About</a>
            </li>
            <li class="nav-item">
              <a class="nav-link "  href="{{ route('inputBook') }}">Admin
                <span class="sr-only">(current)</span>
              </a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">Contact</a>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  <br><br><br>
    <!-- Page Content -->
<div class="container">
  <div class="container mt-3">
<div class="row">
    <div class="col-lg-4 col-md-6 mb-4">
        <div class="card h-100">
            <a href="#"><img class="card-img-top" src="https://bitly.com.vn/ne6bH" alt=""></a>
            <div class="card-body">
                <h4 class="card-title">
                    <a href="#" name="nameproduct1">{{$book->title}}</a>
                </h4>
                <h5 name = "price1">{{$book->price}}₫</h5>
                <p class="card-text">update : {{$book->update_date}}</p>
            </div>
           
        </div>
    </div>
    <div class="col-lg-8 col-md-6 mb-4">
        <h3>Nội dung : <small class="text-muted">&#9733; &#9733; &#9733; &#9733; &#9734;</small></h3>
        
        <div class="card h-50">
           <p>{{$book->content}}</p>
           
        </div>
    </div>
    </div> 
 </div>
</div>
<footer class="py-5 bg-dark" aria-readonly="true">
    <div class="container">
      <p class="m-0 text-center text-white">Quadeptrai<i class="fas fa-heart"></i>book.com</p>
    </div>
    <!-- /.container -->
  </footer>
</body>
</html>

inputCategory.blade.php


<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
</head>
<style>
  .mt-3{
    min-height: 580px;
  }
</style>
<body>
    <!-- Navigation -->
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
      <div class="container">
        <a class="navbar-brand" href="{{ route('main') }}"><i class="fas fa-heart"></i>Book -.-'</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarResponsive">
          <ul class="navbar-nav ml-auto">
            <li class="nav-item active">
              <a class="nav-link" href="{{ route('main') }}">Home
              </a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">About</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="{{ route('inputBook') }}">Admin
                <span class="sr-only">(current)</span>
              </a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="{{ route('inputBook') }}">Book</a>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  <br><br><br>
    <!-- Page Content -->
<div class="container mt-3">
  <h1>Input Category</h1>
<br>
  <form method="POST" action="{{ route('insertcategory') }}">
     {{ csrf_field() }}
      <div class="input-group mb-3">
        <div class="input-group-prepend">
          <span class="input-group-text">tên danh mục</span>
        </div>
        <input type="text" class="form-control" name="category">
      </div>
      <button type="submit" class="btn btn-primary">Save</button>


  </form>
 
</div>
<footer class="py-5 bg-dark" clear="bottom">
  <div class="container">
    <p class="m-0 text-center text-white">Quadeptrai<i class="fas fa-heart"></i>book.com</p>
  </div>
  <!-- /.container -->
</footer>
</body>
</html>


categoryview.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
</head>
<body>
  <!-- Navigation -->
  <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
    <div class="container">
      <a class="navbar-brand" href="{{ route('main') }}"><i class="fas fa-heart"></i>Book -.-'</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarResponsive">
        <ul class="navbar-nav ml-auto">
          <li class="nav-item active">
            <a class="nav-link" href="{{ route('main') }}">Home
            </a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">About</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="{{ route('inputBook') }}">Admin
              <span class="sr-only">(current)</span>
            </a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Contact</a>
          </li>
        </ul>
      </div>
    </div>
  </nav>

  <!-- Page Content -->
<div class="container">
  <h2 class="text-center">Detail's Category Information</h2>
  <table class="table table-hover">
    <thead>
      <tr>
        <th>Index</th>
        <th>Id</th>
        <th>Tên danh mục</th>
        <th></th>
        <th></th>
      </tr>
    </thead>
    <tbody>
      @foreach ($categoryList as $category)
          <tr>
            <td> {{++$index}} </td>
          <td>{{$category->id}}</td>
          <td><a href="/book/displaybookofcategory/{{$category->id}}">{{$category->category}}</a></td>
            <td> <a href="/editbook/{{ $category->id }}" class="btn btn-warning">Sửa</a></td>
            <td> <a href="/deletebook/{{ $category->id}}" class="btn btn-danger">Xóa</a></td>

          </tr>
      @endforeach
    </tbody>
  </table>
  {{-- {{ $bookList->links() }} --}}
  <a href="{{ route('inputCategory') }}" class="btn btn-primary">Add</a>
</div>
<footer class="py-5 bg-dark">
  <div class="container">
    <p class="m-0 text-center text-white">Quadeptrai<i class="fas fa-heart"></i>book.com</p>
  </div>
  <!-- /.container -->
</footer>
</body>
</html>
main.blade.php


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <meta name="description" content="">
  <meta name="author" content="">
  <title>HomePage SHop</title>
<!-- Latest compiled and minified CSS -->
	<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">

	<!-- jQuery library -->
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

	<!-- Popper JS -->
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.0/css/all.css" integrity="sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ" crossorigin="anonymous">
	<!-- Latest compiled JavaScript -->
	<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
	<style type="text/css">
		body{
			margin-top: 100px;
		}
		a.btn.btn-danger {
		    margin-left: 15px;
		}
		p.btn.btn-success {
		    margin-top: 16px;
		}
		span.btn.btn-primary {
	    margin-left: 15px;
	}
    footer{
        width: 143.4%;
        margin-left: -25%;
    }
    .col-lg-3{
        margin-left: -12%;
        margin-right: 10%;
    }
    
	</style>
</head>

<body>
  <!-- Navigation -->
  <nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
    <div class="container">
      <a class="navbar-brand" href="{{ route('main') }}"><i class="fas fa-heart"></i>Book -.-'</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarResponsive">
        <ul class="navbar-nav ml-auto">
          <li class="nav-item active">
            <a class="nav-link" href="{{ route('main') }}">Home
              <span class="sr-only">(current)</span>
            </a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">About</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="{{ route('inputBook') }}">Admin</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Contact</a>
          </li>
        </ul>
      </div>
      <form method="post" width="50%" action="{{ route('mainsearch') }}">
        {{ csrf_field() }}
        <div class="input-seach" >
          <input name="s"  id="myInput" type="text" placeholder="Search.." class="form-control">
        </div>
      </form>
    </div>
    
  </nav>
   
    

  <!-- Page Content -->
  <div class="container">

    <div class="row">

      <div class="col-lg-3">

        <h1 class="my-4">Category</h1>
        <div class="list-group">
          @foreach ($categoryList as $category)
          <a href="/book/mainbookofcategory/{{$category->id}}" class="list-group-item">{{$category->category}}</a>          @endforeach
        </div>

      </div>
      <!-- /.col-lg-3 -->

      <div class="col-lg-9">

        <div id="carouselExampleIndicators" class="carousel slide my-4" data-ride="carousel">
          <ol class="carousel-indicators">
            <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
            <li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
            <li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
          </ol>
          <div class="carousel-inner" role="listbox">
            <div class="carousel-item active">
              <img class="d-block img-fluid" src="https://bitly.com.vn/KMy2R" alt="First slide">
            </div>
            <div class="carousel-item">
              <img class="d-block img-fluid" src="https://bitly.com.vn/KMy2R" alt="Second slide">
            </div>
            <div class="carousel-item">
              <img class="d-block img-fluid" src="https://bitly.com.vn/KMy2R" alt="Third slide">
            </div>
          </div>
          <a class="carousel-control-prev" href="#carouselExampleIndicators" 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="#carouselExampleIndicators" role="button" data-slide="next">
            <span class="carousel-control-next-icon" aria-hidden="true"></span>
            <span class="sr-only">Next</span>
          </a>
        </div>

        <div class="row">
		@foreach ($bookList as $book)
        <div class="col-lg-4 col-md-6 mb-4">
            <div class="card h-100">
                <a href="#"><img class="card-img-top" src="https://bitly.com.vn/ne6bH" alt=""></a>
                <div class="card-body">
                    <h4 class="card-title">
                        <a href="#" name="nameproduct1">{{$book->title}}</a>
                    </h4>
                    <h5 name = "price1">{{$book->price}}₫</h5>
                    <p class="card-text">update : {{$book->update_date}}</p>
                </div>
                <div class="card-footer">
                    <small class="text-muted">&#9733; &#9733; &#9733; &#9733; &#9734;</small>
                   <a href="/book/bookdetail/{{$book->href_param}}.html" class="btn btn-danger">Xem chi tiết</a>                   
                </div>
            </div>
        </div>
        @endforeach
			
		

        <!-- /.row -->

      </div>
      <!-- /.col-lg-9 -->

    </div>
    <!-- /.row -->

  </div>
  <!-- /.container -->

  <!-- Footer -->
  <footer class="py-5 bg-dark">
    <div class="container">
      <p class="m-0 text-center text-white">Quadeptrai<i class="fas fa-heart"></i>book.com</p>
    </div>
    <!-- /.container -->
  </footer>

</body>

</html>


Phân Loại Bài Viết

Tài Liệu Tham Khảo

Đã sao chép!!!