[BÀI 35] HƯỚNG DẪN VIẾT MỘT TRANG WEB CƠ BẢN (PHẦN 4: THỰC HIỆN CHỨC NĂNG QUẢN LÝ BANNER)
http://laptrinhphp.vn/bai-35-huong-dan-viet-mot-trang-web-co-ban-phan-4-thuc-hien-chuc-nang-quan-ly-banner/
Last updated
http://laptrinhphp.vn/bai-35-huong-dan-viet-mot-trang-web-co-ban-phan-4-thuc-hien-chuc-nang-quan-ly-banner/
Last updated
[BÀI 35] HƯỚNG DẪN VIẾT MỘT TRANG WEB CƠ BẢN (PHẦN 4: THỰC HIỆN CHỨC NĂNG QUẢN LÝ BANNER)
Trong trang web tôi hướng dẫn các bạn làm, banner đóng vai trò rất quan trọng, thể hiện được điều mà chủ website muốn khách hàng chú ý, mà truyền tải thông điệp tới khách hàng. Nội dung của một banner luôn nổi bật và đây là phần mà khách hàng dễ dàng quan sát nhất.
Một số chức năng cơ bản để quản lý banner:
Thêm banner mới
Sửa banner cũ
Xóa một banner đã có
Trong thực tế, để quản lý một banner sẽ cần nhiều chức năng hơn như thế này, song để bắt đầu chúng ta hãy bắt đầu với những chức năng đơn giản và cơ bản nhất.
Phần menu tôi đã tạo sẵn một mục là banner dùng để quản lý các chức năng về banner:
Tôi sẽ sửa “banner hiện tại” thành “danh sách banner” và thêm một mục nữa là “thêm banner mới”, để làm điều này tôi vào file admin/view/layout/layout.php và sửa lại như sau:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
<!DOCTYPE html> <html> <head> <title>'Trang quản trị'</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <link rel="stylesheet" href="public/style.css"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body><div id="wrapper"> <!-- start avigation --> <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="index.php">'QUẢN TRỊ HỆ THỐNG'</a> </div> <!-- end avigation --> <!-- start top menu --> <ul class="nav navbar-right top-nav"> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="glyphicon glyphicon-user"></i> 'Xin chào: <?php if(isset($_SESSION["loged"])) echo $_SESSION["loged"]; ?>'<b class="caret"></b></a> <ul class="dropdown-menu"> <li> <a href="index.php?controller=users&act=danhsach_users"><i class="glyphicon glyphicon-list-alt"></i> 'Danh sách tài khoản'</a> </li> <li> <a href="index.php?controller=users&act=hoso"><i class="glyphicon glyphicon-user"></i> 'Hồ sơ cá nhân'</a> </li> <li> <a href="index.php?controller=users&act=add"><i class="glyphicon glyphicon-plus-sign"></i> 'Thêm tài khoản'</a> </li> <li class="divider"></li> <li> <a href="index.php?act=logout"><i class="glyphicon glyphicon-off"></i> 'Đăng xuất'</a> </li> </ul> </li> </ul> <!-- end top menu --> <!-- start menu left --> <div class="collapse navbar-collapse navbar-ex1-collapse"> <ul class="nav navbar-nav side-nav"> <li style="background:#52bc89;color:#fff;"> <a href="#" style="color:#fff;"><i class="glyphicon glyphicon-folder-open"></i> 'Danh mục'</a> </li> <li> <a href="javascript:;" data-toggle="collapse" data-target="#demo_dmcc"><i class="glyphicon glyphicon-picture"></i> Banner <i class="glyphicon glyphicon-chevron-down"></i></a> <ul id="demo_dmcc" class="collapse"> <li> <a href="index.php?controller=banner&act=danhsach">'Danh sách banner'</a> </li> <li> <a href="index.php?controller=banner&act=add">'Thêm banner mới'</a> </li> </ul> </li> <li> <a href="javascript:;" data-toggle="collapse" data-target="#demo_dm"><i class="glyphicon glyphicon-picture"></i>' Danh sách khóa học '<i class="glyphicon glyphicon-chevron-down"></i></a> <ul id="demo_dm" class="collapse"> <li> <a href="#">'Danh sách'</a> </li> <li> <a href="#">'Thêm mới'</a> </li> </ul> </li> <li> <a href="javascript:;" data-toggle="collapse" data-target="#demo_dmm"><i class="glyphicon glyphicon-sunglasses"></i>' Dịch vụ của chúng tôi '<i class="glyphicon glyphicon-chevron-down"></i></a> <ul id="demo_dmm" class="collapse"> <li> <a href="#">'Danh sách'</a> </li> <li> <a href="#">'Thêm'</a> </li> </ul> </li> <li> <a href="javascript:;" data-toggle="collapse" data-target="#demo_bv"><i class="glyphicon glyphicon-globe"></i> 'Thông tin về Devpro' <i class="glyphicon glyphicon-chevron-down"></i></a> <ul id="demo_bv" class="collapse"> <li> <a href="#">'Chi tiết'</a> </li> </ul> </li> <li> <a href="javascript:;" data-toggle="collapse" data-target="#demo_a1"><i class="glyphicon glyphicon-camera"></i> 'Thông tin liên hệ' <i class="glyphicon glyphicon-chevron-down"></i></a> <ul id="demo_a1" class="collapse"> <li> <a href="#">'Chi tiết'</a> </li> </ul> </li> <li> <a href="javascript:;" data-toggle="collapse" data-target="#demo_a2"><i class="glyphicon glyphicon-tag"></i> 'Tin nhắn học viên' <i class="glyphicon glyphicon-chevron-down"></i></a> <ul id="demo_a2" class="collapse"> <li> <a href="#">'Danh sách'</a> </li> </ul> </li> <li> <a href="javascript:;" data-toggle="collapse" data-target="#demo_a456"><i class="glyphicon glyphicon-star-empty"></i> Design <i class="glyphicon glyphicon-chevron-down"></i></a> <ul id="demo_a456" class="collapse"> <li> <a href="#">'Để nâng cấp website, liên hệ:'</a> <a href="http://facebook.com/trung.hongoc">'Hồ Ngọc Trung'</a> <a href="#">0969 540 038</a> </li> </ul> </li> </ul> </div> </nav> <!-- end menu left --> <!-- 'start nội dung' --> <div id="page-wrapper"> <div class="container-fluid"> <?php //gọi controller động: $duongdan_controller=""; if(isset($_GET["controller"])){ $duongdan_controller="controller/controller_".$_GET["controller"].".php"; if(file_exists($duongdan_controller)) include $duongdan_controller; } ?> </div> </div> <!-- 'end nội dung' --> </div></body></html>
Sau khi chỉnh sửa, menu banner sẽ hiển thị như sau:
Tạo trang thêm banner:
Tạo một folder tên là “banner” trong thư mục admin/view/
Tiếp tục tạo file add.php trong thư mục admin/view/banner/add.php
Trong file admin/view/banner/add.php tôi viết như sau:
1234567891011121314151617181920
<div class="panel panel-default"> <div class="panel-heading">'Thêm Banner'</div> <div class="panel-body"> <form class="form-horizontal" action="" method="post" enctype="multipart/form-data"> <div class="form-group"> <label class="control-label col-sm-2" for="email">'Nhấn chọn hình ảnh:'</label> <div class="col-sm-10"> <input type="file" required name="img" class="form-control"> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <button type="submit" class="btn btn-default" name="add_banner">'Thêm'</button> </div> </div> </form> </div></div>
Tạo một bảng lưu thông tin các banner trong csdl:
Tạo một bảng có tên là banner.
Trong bảng banner tạo 2 trường sau: id (kiểu int – khóa chính – tự động tăng) , link (để lưu tên hình ảnh, kiểu varchar 200)
Tạo một controller để quản lý banner:
Trong thư mục admin/controller/ tôi tạo một file có tên là controller_banner.php
file admin/controller/controller_banner.php tôi viết như sau:
1234567891011121314151617181920212223242526272829303132333435363738394041
<?php class controller_banner extends controller { public function __construct(){ parent::__construct(); if(isset($_GET["act"])){ $act = $_GET["act"]; //thêm banner: if($act =="add"){ include "view/banner/add.php"; //nếu người dùng submit form: if(isset($_POST["add_banner"])) $this->add_banner(); } } } //hàm thêm một banner mới: public function add_banner(){ if(isset($_FILES['img'])&&$_FILES['img']["name"]!=null){ //lấy tên của file: $t = time(); $file_name=$t."_".$_FILES['img']["name"]; //lấy nội dung của file: $file_tmp =$_FILES['img']['tmp_name']; //tạo đường dẫn lưu file: $path ="../imgs/banner/".$file_name; $dd= "imgs/banner/".$file_name; //upload nội dung file vào đường dẫn vừa tạo: move_uploaded_file($file_tmp,$path); //lưu vào database: $this->model->query(" insert into banner(link) values('$file_name') "); header("location:index.php?controller=banner&act=danhsach"); } } } new controller_banner();?>
Đừng quên tạo một thư mục imgs ngang cấp với thư mục admin, và trong thư mục imgs hãy tạo một thư mục có tên là banner (để lưu các ảnh của banner vào đây).
Cấu trúc file sẽ như sau:
Kết thúc bước này các bạn đã upload được ảnh vào thư mục imgs/banner và lưu tên ảnh vào csdl.
Tạo view danh sách: tôi tạo một file có tên là list.php nằm trong thư mục admin/view/banner/ để viết giao diện hiển thị danh sách banner.
File admin/view/banner/list.php tôi viết như sau:
12345678910111213141516171819202122232425
<div class="panel panel-default"> <div class="panel-heading">'Danh sách banner'</div> <div class="panel-body"> <div class="table-responsive"> <table class="table table-hover table-bordered"> <tr> <th class="text-center">STT</th> <th class="text-center">'Hình ảnh'</th> <th class="text-center">'Quản lý'</th> </tr> <tr> <td class="text-center"></td> <td></td> <td> <a href="index.php?controller=banner&act=danhsach&do=edit&id=1" class="btn btn-danger">'Sửa'</a> <a href="index.php?controller=banner&act=danhsach&do=del&id=1" class="btn btn-danger">'Xóa'</a> </td> </tr> </table> </div> </div></div>
Quay lại file admin/controller/controller_banner.php, tôi viết tiếp lệnh xử lý hiển thị danh sách như sau:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
<?php class controller_banner extends controller { public function __construct(){ parent::__construct(); if(isset($_GET["act"])){ $act = $_GET["act"]; //thêm banner: if($act =="add"){ include "view/banner/add.php"; //nếu người dùng submit form: if(isset($_POST["add_banner"])) $this->add_banner(); } //gọi danh sách banner: else if($act = "danhsach") $this->list_banner(); else echo "lỗi"; } } //hàm thêm một banner mới: public function add_banner(){ if(isset($_FILES['img'])&&$_FILES['img']["name"]!=null){ //lấy tên của file: $t = time(); $file_name=$t."_".$_FILES['img']["name"]; //lấy nội dung của file: $file_tmp =$_FILES['img']['tmp_name']; //tạo đường dẫn lưu file: $path ="../imgs/banner/".$file_name; $dd= "imgs/banner/".$file_name; //upload nội dung file vào đường dẫn vừa tạo: move_uploaded_file($file_tmp,$path); //lưu vào database: $this->model->query(" insert into banner(link) values('$file_name') "); header("location:index.php?controller=banner&act=danhsach"); } } //hàm lấy danh sách banner: public function list_banner(){ $arrs = $this->model->fetch_all(" select * from banner "); include "view/banner/list.php"; } } new controller_banner();?>
Sau đó tôi quay lại sửa file admin/view/banner/list.php để đổ dữ liệu vừa select vào đấy:
123456789101112131415161718192021222324
<div class="panel panel-default"> <div class="panel-heading">'Danh sách banner'</div> <div class="panel-body"> <div class="table-responsive"> <table class="table table-hover table-bordered"> <tr> <th class="text-center">STT</th> <th class="text-center">'Hình ảnh'</th> <th class="text-center">'Quản lý'</th> </tr> <?php $stt=0;foreach($arrs as $arr){$stt++; ?> <tr> <td class="text-center"><?php echo $stt; ?></td> <td><img src="../imgs/banner/<?php echo $arr["link"]; ?>" alt="" style="width:150px;"></td> <td> <a href="index.php?controller=banner&act=danhsach&do=edit&id=<?php echo $arr["id"]; ?>" class="btn btn-success">'Sửa'</a> <a href="index.php?controller=banner&act=danhsach&do=del&id=<?php echo $arr["id"]; ?>" class="btn btn-danger">'Xóa'</a> </td> </tr> <?php } ?> </table> </div> </div></div>
Trang danh sách banner sẽ hiển thị như sau:
Tôi có tạo một nút “Sửa” (màu xanh) để có thể sửa hình ảnh. và nút sửa này là 1 thẻ a để tôi truyền biến do=edit và id= id của ảnh. Giống như bài trước, ở bài này tôi sẽ hướng dẫn các bạn xóa ảnh theo id.
Các bước để xóa 1 ảnh:
Chỉ thực hiện khi người dùng submit form sửa.
Lấy ảnh mới mà người dùng vừa thêm và tải vào mục imgs/banner/ đồng thời update trường “link” trong csdl
Xoá ảnh cũ.
Tạo một file để hiển thị trang sửa banner: trong thư mục admin/view/ tôi tạo file là edit.php. file này có nội dung như sau:
12345678910111213141516171819202122232425262728
<div class="panel panel-default"> <div class="panel-heading">'Sửa Banner'</div> <div class="panel-body"> <form class="form-horizontal" action="" method="post" enctype="multipart/form-data"> <div class="form-group"> <label class="control-label col-sm-2" for="email">'Ảnh cũ:'</label> <div class="col-sm-10"> <img src="" alt="" style="width:100px;"> </div> </div> <div class="form-group"> <label class="control-label col-sm-2" for="email">'Chọn ảnh mới:'</label> <div class="col-sm-10"> <input type="file" required name="img" class="form-control"> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <button type="submit" class="btn btn-default" name="add_banner">'Cập nhật'</button> </div> </div> </form> </div></div>
Sau đó tôi quay lại file admin/controller/controller_banner.php viết tiếp các lệnh: lấy dữ liệu ảnh cũ đổi ra màn hình. sau đó thực hiện cập nhật nếu form được nhấn. Chi tiết như sau:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
<?php class controller_banner extends controller { public function __construct(){ parent::__construct(); if(isset($_GET["act"])){ $act = $_GET["act"]; //thêm banner: if($act =="add"){ include "view/banner/add.php"; //nếu người dùng submit form: if(isset($_POST["add_banner"])) $this->add_banner(); } //gọi danh sách banner: else if($act == "danhsach"){ $this->list_banner(); } //gọi trang edit: else if($act == "edit"){ if(isset($_GET["id"]));{ $id = $_GET["id"]; $this->edit_banner($id); } } else echo "lỗi"; } } //hàm thêm một banner mới: public function add_banner(){ if(isset($_FILES['img'])&&$_FILES['img']["name"]!=null){ //lấy tên của file: $t = time(); $file_name=$t."_".$_FILES['img']["name"]; //lấy nội dung của file: $file_tmp =$_FILES['img']['tmp_name']; //tạo đường dẫn lưu file: $path ="../imgs/banner/".$file_name; $dd= "imgs/banner/".$file_name; //upload nội dung file vào đường dẫn vừa tạo: move_uploaded_file($file_tmp,$path); //lưu vào database: $this->model->query(" insert into banner(link) values('$file_name') "); header("location:index.php?controller=banner&act=danhsach"); } } //hàm lấy danh sách banner: public function list_banner(){ $arrs = $this->model->fetch_all(" select * from banner "); include "view/banner/list.php"; } //hàm sửa banner: public function edit_banner($id){ $arr = $this->model->fetch_one(" select * from banner where id = '$id' "); include "view/banner/edit.php"; if(isset($_POST["edit_banner"])){ //xóa ảnh cũ nếu có: $link_cu = "../imgs/banner/".$arr["link"]; if(file_exists($link_cu)) unlink($link_cu); //lấy tên của file mới: $t = time(); $file_name=$t."_".$_FILES['img']["name"]; //lấy nội dung của file mới: $file_tmp =$_FILES['img']['tmp_name']; //tạo đường dẫn lưu file mới: $path ="../imgs/banner/".$file_name; $dd= "imgs/banner/".$file_name; //upload nội dung file vào đường dẫn vừa tạo: move_uploaded_file($file_tmp,$path); //cập nhật lại database: $this->model->query(" update banner set link = '$file_name' where id = '$id' "); header("location:index.php?controller=banner&act=danhsach"); } } } new controller_banner();?>
Và tôi sửa lại link edit và del banner trong trang admin/view/banner/list.php thành: index.php?controller=banner&act=edit&id=… , và index.php?controller=banner&act==del&id= cho ngắn hơn:
123456789101112131415161718192021222324
<div class="panel panel-default"> <div class="panel-heading">'Danh sách banner'</div> <div class="panel-body"> <div class="table-responsive"> <table class="table table-hover table-bordered"> <tr> <th class="text-center">STT</th> <th class="text-center">'Hình ảnh'</th> <th class="text-center">'Quản lý'</th> </tr> <?php $stt=0;foreach($arrs as $arr){$stt++; ?> <tr> <td class="text-center"><?php echo $stt; ?></td> <td><img src="../imgs/banner/<?php echo $arr["link"]; ?>" alt="" style="width:150px;"></td> <td> <a href="index.php?controller=banner&act=edit&id=<?php echo $arr["id"]; ?>" class="btn btn-success">'Sửa'</a> <a href="index.php?controller=banner&act==del&id=<?php echo $arr["id"]; ?>" class="btn btn-danger">'Xóa'</a> </td> </tr> <?php } ?> </table> </div> </div></div>
Quay lại file admin/view/banner/edit.php tôi đổ dữ liệu vừa select ra vào giao diện này:
12345678910111213141516171819202122232425262728
<div class="panel panel-default"> <div class="panel-heading">'Sửa Banner'</div> <div class="panel-body"> <form class="form-horizontal" action="" method="post" enctype="multipart/form-data"> <div class="form-group"> <label class="control-label col-sm-2" for="email">'Ảnh cũ:'</label> <div class="col-sm-10"> <img src="../imgs/banner/<?php echo $arr["link"]; ?>" alt="" style="width:100px;"> </div> </div> <div class="form-group"> <label class="control-label col-sm-2" for="email">'Chọn ảnh mới:'</label> <div class="col-sm-10"> <input type="file" required name="img" class="form-control"> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <button type="submit" class="btn btn-default" name="edit_banner">'Cập nhật'</button> </div> </div> </form> </div></div>
Đến bước này, bạn đã có thể thay đổi ảnh banner.
Quay lại trang danh sách, tôi muốn khi nhấn vào nút “xóa”, thì tôi sẽ xóa hình ảnh đấy theo id:
Trong file admin/controller/controller_banner.php tôi viết hàm xóa như sau:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
<?php class controller_banner extends controller { public function __construct(){ parent::__construct(); if(isset($_GET["act"])){ $act = $_GET["act"]; //thêm banner: if($act =="add"){ include "view/banner/add.php"; //nếu người dùng submit form: if(isset($_POST["add_banner"])) $this->add_banner(); } //gọi danh sách banner: else if($act == "danhsach"){ $this->list_banner(); } //gọi trang edit: else if($act == "edit"){ if(isset($_GET["id"]));{ $id = $_GET["id"]; $this->edit_banner($id); } } //xóa ảnh theo id: else if($act == "del"){ if(isset($_GET["id"]));{ $id = $_GET["id"]; $this->del_banner($id); } } else echo "lỗi"; } } //hàm thêm một banner mới: public function add_banner(){ if(isset($_FILES['img'])&&$_FILES['img']["name"]!=null){ //lấy tên của file: $t = time(); $file_name=$t."_".$_FILES['img']["name"]; //lấy nội dung của file: $file_tmp =$_FILES['img']['tmp_name']; //tạo đường dẫn lưu file: $path ="../imgs/banner/".$file_name; $dd= "imgs/banner/".$file_name; //upload nội dung file vào đường dẫn vừa tạo: move_uploaded_file($file_tmp,$path); //lưu vào database: $this->model->query(" insert into banner(link) values('$file_name') "); header("location:index.php?controller=banner&act=danhsach"); } } //hàm lấy danh sách banner: public function list_banner(){ $arrs = $this->model->fetch_all(" select * from banner "); include "view/banner/list.php"; } //hàm sửa banner: public function edit_banner($id){ $arr = $this->model->fetch_one(" select * from banner where id = '$id' "); include "view/banner/edit.php"; if(isset($_POST["edit_banner"])){ //xóa ảnh cũ nếu có: $link_cu = "../imgs/banner/".$arr["link"]; if(file_exists($link_cu)) unlink($link_cu); //lấy tên của file mới: $t = time(); $file_name=$t."_".$_FILES['img']["name"]; //lấy nội dung của file mới: $file_tmp =$_FILES['img']['tmp_name']; //tạo đường dẫn lưu file mới: $path ="../imgs/banner/".$file_name; $dd= "imgs/banner/".$file_name; //upload nội dung file vào đường dẫn vừa tạo: move_uploaded_file($file_tmp,$path); //cập nhật lại database: $this->model->query(" update banner set link = '$file_name' where id = '$id' "); header("location:index.php?controller=banner&act=danhsach"); } } //hàm xóa banner theo id: public function del_banner($id){ $arr = $this->model->fetch_one(" select * from banner where id = '$id' "); //xóa ảnh cũ nếu có: $link_cu = "../imgs/banner/".$arr["link"]; if(file_exists($link_cu)) unlink($link_cu); $this->model->query(" delete from banner where id = '$id' "); header("location:index.php?controller=banner&act=danhsach"); } } new controller_banner();?>
Tuy nhiên ở bước trước tôi có viết link xóa thừa 1 dấu bằng “=” cho nên sẽ không thực hiện được, link cũ của tôi là: index.php?controller=banner&act==del&id= tôi sửa lại thành index.php?controller=banner&act=del&id= , chi tiết tôi sửa ở file admin/view/banner/list.php như sau:
123456789101112131415161718192021222324
<div class="panel panel-default"> <div class="panel-heading">'Danh sách banner'</div> <div class="panel-body"> <div class="table-responsive"> <table class="table table-hover table-bordered"> <tr> <th class="text-center">STT</th> <th class="text-center">'Hình ảnh'</th> <th class="text-center">'Quản lý'</th> </tr> <?php $stt=0;foreach($arrs as $arr){$stt++; ?> <tr> <td class="text-center"><?php echo $stt; ?></td> <td><img src="../imgs/banner/<?php echo $arr["link"]; ?>" alt="" style="width:150px;"></td> <td> <a href="index.php?controller=banner&act=edit&id=<?php echo $arr["id"]; ?>" class="btn btn-success">'Sửa'</a> <a href="index.php?controller=banner&act=del&id=<?php echo $arr["id"]; ?>" class="btn btn-danger">'Xóa'</a> </td> </tr> <?php } ?> </table> </div> </div></div>
Đến đây, tôi đã hoàn tất hướng dẫn các bạn thực hiện các thao tác quản lý banner cơ bản, chúc các bạn thành công. Tải toàn bộ mã nguồn bài hôm nay tại đây!
Xem video hướng dẫn thực hiện chức năng quản lý banner: