TRANG THÊM MỚI SẢN PHẨM (PHẦN 14)
Trong thư mục admin/product, tạo mới file add{dot}php để viết mã lệnh trang thêm mới sản phẩm.
Nội dung file admin/product/add{dot}php như sau:
PHP Code:
<?php
//Khởi động session
session_start();
//Kiểm tra nếu chưa đăng nhập thì quay về trang đăng nhập
if(!isset($_SESSION***91;'user'***93;)){
header('location:../user/login{dot}php');
}
//Require các file cần thiết
require '../../configs/Config{dot}php';
require '../../models/Category{dot}php';
require '../../models/Product{dot}php';
//Nếu có POST dữ liệu lên thì xử lý
if($_POST){
//Upload hình ảnh
if(($image = $_FILES***91;'image'***93;***91;'name'***93;) != null){
move_uploaded_file($_FILES***91;'image'***93;***91;'tmp_name'***93;, 'userfiles/' . $image);
}else{
$image = '';
}
//Nhận dữ liệu từ form và gán vào một mãng (Có thể sử dụng đối tượng ProductObj để lưu)
$data = array(
'category_id' => $_POST***91;'category_id'***93;,
'name' => $_POST***91;'name'***93;,
'detail' => $_POST***91;'detail'***93;,
'image' => $image,
'price' => $_POST***91;'price'***93;,
'status' => isset($_POST***91;'status'***93;) ? 1 : 0,
'created' => date('Y-m-d H:i:s'),
'modified' => date('Y-m-d H:i:s')
);
//Khởi tạo đối tượng sản phẩm (Product)
$productModel = new Product();
//Thêm mới
if($productModel->add($data)){
//Tạo session để lưu cờ thông báo thành công
$_SESSION***91;'success'***93; = true;
//Tải lại trang (Mục đích là để reset form)
header('location:add{dot}php');
//Ngừng thực thi
exit();
}
}
//Khởi tạo đối tượng danh mục sản phẩm (Category)
$categoryModel = new Category();
//Lấy danh sách danh mục sản phẩm có trạng thái kích hoạt (Status = 1)
$categoryActiveList = $categoryModel->getActiveList();
//Tiêu đề trang
$title = 'Sản phẩm - Thêm mới';
//View
$view = 'product/add{dot}tpl{dot}php';
//Require layout
require '../../views/admin/layout{dot}tpl{dot}php';
?>
Mở file models/Category{dot}php và thêm vào lớp Category khối lệnh mới dưới đây:
PHP Code:
public function getActiveList(){
//SQL
$sql = "SELECT * FROM tbl_category WHERE status = 1 ORDER BY category_id ASC";
//Query
$this->db->query($sql);
//Tạo mãng lưu trữ
$listCategoryActive = array();
//Fetch
while($row = $this->db->fetch()){
//Khởi tạo đối tượng CategoryObj
$categoryObj = new CategoryObj();
//Gán thông tin
$categoryObj->setCategoryId($row***91;'category_id'***93;);
$categoryObj->setName($row***91;'name'***93;);
$categoryObj->setStatus($row***91;'status'***93;);
$categoryObj->setCreated($row***91;'created'***93;);
$categoryObj->setModified($row***91;'modified'***93;);
//Gán vào mãng lưu trữ
$listCategoryActive***91;***93; = $categoryObj;
}
//Return
return $listCategoryActive;
}
Mở file models/Product{dot}php và thêm vào lớp Product khối lệnh mới dưới đây:
PHP Code:
public function add($data){
//SQL
$sql = "INSERT INTO tbl_product(category_id, name, detail, image, price, status, created, modified) VALUES({$data***91;'category_id'***93;}, '{$data***91;'name'***93;}', '{$data***91;'detail'***93;}', '{$data***91;'image'***93;}', {$data***91;'price'***93;}, {$data***91;'status'***93;}, '{$data***91;'created'***93;}', '{$data***91;'modified'***93;}')";
//Query và return
return $this->db->query($sql);
}
Trong thư mục views/admin/product, tạo mới file add{dot}tpl{dot}php để trình bày giao diện trang thêm mới sản phẩm.
Nội dung file views/admin/product/add{dot}tpl{dot}php như sau:
Code:
<form name="add" method="POST" enctype="multipart/form-data" action="">
<?php if(isset($_SESSION['success'])): ?>
<p style="color:green;">Sản phẩm đã được thêm mới thành công!</p>
<?php unset($_SESSION['success']); ?>
<?php endif; ?>
<p>
<label>Danh mục:</label>
<select name="category_id">
<?php foreach($categoryActiveList as $categoryActive): ?>
<option value="<?php echo $categoryActive->getCategoryId(); ?>"><?php echo $categoryActive->getName(); ?></option>
<?php endforeach; ?>
</select>
</p>
<p>
<label>Tên sản phẩm:</label>
<input type="text" name="name" value="" />
</p>
<p>
<label>Chi tiết:</label>
<textarea name="detail"></textarea>
</p>
<p>
<label>Hình ảnh:</label>
<input type="file" name="image" />
</p>
<p>
<label>Giá bán:</label>
<input type="text" name="price" value="" />
</p>
<p>
<label>Trạng thái:</label>
<input type="checkbox" name="status" value="1" />
</p>
<p>
<input type="submit" value="Thêm mới" />
</p>
</form>
Các bạn truy cập trang thêm mới sản phẩm theo địa chỉ localhost/admin/product/add{dot}php để kiểm tra.
Bookmarks