By GokiSoft.com|
19:55 05/12/2022|
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
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.
Tags:
Phản hồi từ học viên
5
(Dựa trên đánh giá ngày hôm nay)
![thienphu [T1907A]](https://www.gravatar.com/avatar/c4573ea65e411176c1852fd8584f1ab1.jpg?s=80&d=mm&r=g)
thienphu
2020-07-08 02:31:20
#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' => 'smileahjhj@gmail.com',
// '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' => 'smileahjhj@gmail.com',
// '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' => 'smileahjhj@gmail.com',
// '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' => 'smileahjhj@gmail.com',
// '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' => 'smileahjhj@gmail.com',
// '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' => 'smileahjhj@gmail.com',
// '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' => 'smileahjhj@gmail.com',
// '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' => 'smileahjhj@gmail.com',
// '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' => 'smileahjhj@gmail.com',
// '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' => 'smileahjhj@gmail.com',
// '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' => 'smileahjhj@gmail.com',
'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\AuthorController@index')->name('viewAuthorList');
Route::get('/view_add', 'Modal\AuthorController@viewAdd')->name('viewadd');
Route::post('/post_addAuthor', 'Modal\AuthorController@postAddAuthor')->name('postAdd');
});
Route::group(['prefix' => '/modal/book'], function () {
Route::get('/index', 'Modal\BookController@index')->name('viewBookList');
Route::get('/view_add', 'Modal\BookController@viewAdd')->name('viewaddbook');
Route::post('/post_addBook', 'Modal\BookController@postAddBook')->name('postAddBook');
Route::get('/deletedIdBook/{id}', 'Modal\BookController@deletedIdBook')->name('deletedIdBook');
Route::get('/editBook/{id}', 'Modal\BookController@editbook')->name('editbook');
Route::post('/updateBook', 'Modal\BookController@updateBook')->name('smileahjhj');
Route::get('/search', 'Modal\BookController@searchBook')->name('searchBook');
});
![Trương Công Vinh [T1907A]](https://www.gravatar.com/avatar/223a7e3a46f4a747f81b921fe023fcc4.jpg?s=80&d=mm&r=g)
Trương Công Vinh
2020-07-04 08:27:24
book.php
<?php
use Illuminate\Support\Facades\Route;
Route::group(['prefix'=>'book'],function(){
Route::get('/inputbook','book\bookController@inputbook')->name('inputBook');
Route::get('/inputcategory','book\bookController@inputcategory')->name('inputCategory');
Route::get('/displaybook','book\bookController@displaybook')->name('displayBook');
Route::get('/displaybookofcategory/{id}','book\bookController@displaybookofcategory');
Route::post('/serchBook','book\bookController@serchbook')->name('serch');
Route::get('/displaycategory','book\bookController@displaycategory')->name('displayCategory');
Route::get('/displaycategoryofid/{id}','book\bookController@displaycategoryofid');
Route::post('/insertbook','book\bookController@insertbook')->name('insertbook');
Route::post('/insertcategory','book\bookController@insertcategory')->name('insertcategory');
Route::get('/main','book\bookController@viewmain')->name('main');
Route::get('/main','book\bookController@dataFormain')->name('main');
Route::post('/mainsearch','book\bookController@searchbook')->name('mainsearch');
Route::get('/mainbookofcategory/{id}','book\bookController@mainbookofcategory');
Route::get('/bookdetail/{href_param}.html','book\bookController@bookDetail');
});
?>
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">★ ★ ★ ★ ☆</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">★ ★ ★ ★ ☆</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>