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 chỉnh sửa sản phẩm

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

– Câu lệnh IF..ELSE ngắn gọn (Viết tắt).

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

Nội dung file admin/product/edit.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’;

//Lấy product_id từ URL
$product_id = $_GET[‘product_id’];

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

//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,
‘modified’ => date(‘Y-m-d H:i:s’)
);

//Cập nhật
if(edit_product($data, $product_id)){
//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à để tải lại thông tin mới)
header(‘location:edit.php?product_id=’ . $product_id);
}
}

//Lấy thông tin sản phẩm để trình bày trên form
$product = get_product_by_id($product_id);

//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/edit.tpl.php’;
?>

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

function get_product_by_id($product_id){
//SQL
$sql = “SELECT * FROM tbl_product WHERE product_id = $product_id”;

//Query
$query = mysql_query($sql);

//Fetch và return
return mysql_fetch_assoc($query);
}

function edit_product($data, $product_id){
//SQL
$sql = “UPDATE tbl_product SET category_id = {$data[‘category_id’]}, name = ‘{$data[‘name’]}’, detail = ‘{$data[‘detail’]}’, price = {$data[‘price’]}, status = {$data[‘status’]}, modified = ‘{$data[‘modified’]}'”;

//Nếu có cập nhật hình ảnh
if($data[‘image’] != null){
$sql .= “, image = ‘$data[‘image’]'”;
}

//Điều kiện
$sql .= ” WHERE product_id = $product_id”;

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

Trong thư mục views/admin/product, tạo mới file edit.tpl.php để trình bày giao diện trang chỉnh sửa sản phẩm.

Nội dung file views/admin/product/edit.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 – Chỉnh sửa</title>
</head>
<body>

<form name=”edit” method=”POST” enctype=”multipart/form-data” action=””>
<?php if(isset($_SESSION[‘success’])): ?>
<p style=”color:green;”>Sản phẩm đã được chỉnh sửa 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 ($product[‘category_id’] == $category_active[‘category_id’]) ? ‘selected=”selected”‘ : ”; ?>><?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=”<?php echo $product[‘name’]; ?>” />
</p>
<p>
<label>Chi tiết:</label>
<textarea name=”detail”><?php echo $product[‘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=”<?php echo $product[‘price’]; ?>” />
</p>
<p>
<label>Trạng thái:</label>
<input type=”checkbox” name=”status” value=”1″ <?php echo ($product[‘status’] == 1) ? ‘checked=”checked”‘ : ”; ?> />
</p>
<p>
<input type=”submit” value=”Chỉnh sửa” />
</p>
</form>

</body>
</html>

Các bạn truy cập trang danh sách sản phẩm và nhấp vào tên sản phẩm để truy cập tới trang chỉnh sửa sản phẩm.

* Câu lệnh IF..ELSE ngắn gọn (Viết tắt):

Ngoài cách sử dụng câu lệnh IF..ELSE thông thường mà tôi đã hướng dẫn các bạn thì PHP còn cung cấp thêm một cách sử dụng IF..ELSE khác giúp người lập trình sử dụng ngắn gọn hơn. Các bạn sử dụng IF..ELSE ngắn gọn theo mẫu sau:

Điều_kiện ? Nếu_điều_kiện_là_TRUE : Nếu_điều_kiện_là_FALSE;

Ví dụ:

echo (1 > 0) ? ‘OK!’ : ‘Not OK!’;

Ví dụ trên sẽ in ra màn hình chữ “OK!”. Như vậy, dòng lệnh ở ví dụ trên tương đương với khối lệnh sau:

if(1 > 0){
echo ‘OK!’;
}else{
echo ‘Not OK!’;
}

Các bạn có thể tìm hiểu thêm về những cách viết khác của các câu lệnh điều kiện (Điều khiển) ở liên kết http://php.net/manual/en/control-structures.alternative-syntax.php.

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

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