Từng bước học lập trình php căn bản qua dự án website giới thiệu sản phẩm – Trang thêm mới sản phẩm

Nội dung kiến thức phần này gồm:

– Upload file.

Trong thư mục admin/product, tạo mới file add.php để viết mã lệnh trang thêm mới sản phẩm.

Nội dung file admin/product/add.php như sau:

<?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[‘user’])){
header(‘location:../user/login.php’);
}

//Require các file cần thiết
require ‘../../configs/config.php’;
require ‘../../libraries/connect.php’;
require ‘../../models/category.php’;
require ‘../../models/product.php’;

//Nếu có POST dữ liệu lên thì xử lý
if($_POST){
//Upload hình ảnh
if(($image = $_FILES[‘image’][‘name’]) != null){
move_uploaded_file($_FILES[‘image’][‘tmp_name’], ‘userfiles/’ . $image);
}else{
$image = ”;
}

//Nhận dữ liệu từ form và gán vào một mãng
$data = array(
‘category_id’ => $_POST[‘category_id’],
‘name’ => $_POST[‘name’],
‘detail’ => $_POST[‘detail’],
‘image’ => $image,
‘price’ => $_POST[‘price’],
‘status’ => isset($_POST[‘status’]) ? 1 : 0,
‘created’ => date(‘Y-m-d H:i:s’),
‘modified’ => date(‘Y-m-d H:i:s’)
);

//Thêm mới
if(add_product($data)){
//Tạo session để lưu cờ thông báo thành công
$_SESSION[‘success’] = true;

//Tải lại trang (Mục đích là để reset form)
header(‘location:add.php’);
}
}

//Lấy danh sách danh mục sản phẩm có trạng thái kích hoạt (Status = 1)
$category_active_list = get_category_active_list();

//Require file giao diện (View)
require ‘../../views/admin/product/add.tpl.php’;
?>

Mở file models/category.php và thêm vào khối lệnh mới dưới đây:

function get_category_active_list(){
//SQL
$sql = “SELECT * FROM tbl_category WHERE status = 1 ORDER BY category_id ASC”;

//Query và return
return mysql_query($sql);
}

Mở file models/product.php và thêm vào khối lệnh mới dưới đây:

function add_product($data){
//SQL
$sql = “INSERT INTO tbl_product(category_id, name, detail, image, price, status, created, modified) VALUES({$data[‘category_id’]}, ‘{$data[‘name’]}’, ‘{$data[‘detail’]}’, ‘{$data[‘image’]}’, {$data[‘price’]}, {$data[‘status’]}, ‘{$data[‘created’]}’, ‘{$data[‘modified’]}’)”;

//Query và return
return mysql_query($sql);
}

Trong thư mục views/admin/product, tạo mới file add.tpl.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.tpl.php như sau:

<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>Quản trị – Sản phẩm – Thêm mới</title>
</head>
<body>

<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 while($category_active = mysql_fetch_assoc($category_active_list)): ?>
<option value=”<?php echo $category_active[‘category_id’]; ?>”><?php echo $category_active[‘name’]; ?></option>
<?php endwhile; ?>
</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>

</body>
</html>

Các bạn truy cập trang thêm mới sản phẩm theo địa chỉ http://localhost/admin/product/add.php để kiểm tra.

* Upload file:

Upload file là thao tác tải một (Hoặc nhiều) file từ máy người dùng lên server để lưu trữ.

Để upload file lên server các bạn cần đảm bảo các yếu tố sau:

– Form HTML chứa input file phải khai báo thuộc tính “enctype” có giá trị là “multipart/form-data”.
– Thư mục chứa file upload phải tồn tại và được quyền ghi file.
– File được upload phải đảm bảo thỏa mãn các yêu cầu do người lập trình quy định (Nếu có).

Để viết mã lệnh upload file các bạn cần quan tâm tới biến của PHP là $_FILES. Biến $_FILES là một mãng hai chiều chứa các thông tin liên quan tới file được upload như tên (Name), kích thước (Size)…

Các bạn có thể tìm hiểu thêm về biến $_FILES ở liên kết http://php.net/manual/en/reserved.variables.files.php.

Hàm move_uploaded_file dùng để di chuyển file tạm được lưu trữ tạm thời ở thư mục tạm của server sang thư mục upload do người lập trình khai báo.

Các bạn có thể tìm hiểu thêm về upload file ở liên kết http://php.net/manual/en/features.file-upload.php và hàm move_uploaded_file ở liên kết http://php.net/manual/en/function.move-uploaded-file.php.

Tác giả: Lê Trung Hiếu

Viết một bình luận