Từng bước học lập trình PHP cơ bản qua dự án website giới thiệu sản phẩm

TRANG THÊM MỚI SẢN PHẨM (PHẦN 18)

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:
<?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:
PHP:
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:
PHP:
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:
PHP:
<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ỉ https://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 https://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 https://php.net/manual/en/features.file-upload.php và hàm move_uploaded_file ở liên kết https://php.net/manual/en/function.move-uploaded-file.php.
 
TRANG CHỈNH SỬA SẢN PHẨM (PHẦN 19)

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:
<?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:
PHP:
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:
<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ụ:
PHP:
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:
PHP:
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 https://php.net/manual/en/control-structures.alternative-syntax.php.
 
XÓA SẢN PHẨM (PHẦN 20)

Phần này tôi không trình bày kiến thức lập trình PHP. Các bạn thực hiện theo các hướng dẫn dưới đây để hoàn thành chức năng xóa sản phẩm.

Trong thư mục admin/product, tạo mới file delete.php để viết mã lệnh chức năng xóa sản phẩm.

Nội dung file admin/product/delete.php như sau:
PHP:
<?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/product.php';

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

//Xóa
delete_product($product_id);

//Quay về trang danh sách sản phẩm
header('location:list.php');
?>

Mở file models/product.php và thêm vào khối lệnh mới dưới đây:
PHP:
function delete_product($product_id){
//SQL
$sql = "DELETE FROM tbl_product WHERE product_id = $product_id";

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

Xóa là một chức năng nên các bạn không phải tạo giao diện (View).

Các bạn truy cập trang danh sách sản phẩm, ở cột "Tác vụ" các bạn chọn tác vụ "Xóa" để thực hiện xóa sản phẩm tương ứng.
 
MENU (PHẦN 21)

Các kiến thức cần thiết của PHP cơ bản tôi đã trình bày ở các phần trước nên kể từ phần này tôi sẽ không trình bày kiến thức PHP cơ bản nữa. Những vấn đề mới phát sinh mà các bạn không tìm hiểu được thì các bạn có thể gởi bình luận ở phần liên quan để tôi giải thích.

Các bạn tiếp tục thực hiện các bước hướng dẫn sau đây cũng như các phần tiếp theo để hoàn thiện website giới thiệu sản phẩm.

Các trang trong phần quản trị đã được tôi hướng dẫn ở các phần trước. Phần này tôi sẽ hướng dẫn các bạn tạo ra một menu để truy cập tới các trang. Menu này chỉ là các mã lệnh HTML chứ không có gì đặc biệt nên tôi sẽ chỉ trình bày ngắn gọn.

Có hai cách thực hiện như sau:

* Cách 1:

Mở tất cả các file giao diện (View) ngoại trừ file views/admin/user/login.tpl.php và thêm mới khối mã lệnh HTML sau vào ngay kề dưới thẻ <body>:
HTML:
<div>
<ul style="float:left;">
<li>
<a href="<?php echo SITE_URL . 'admin'; ?>">Trang chủ</a>
</li>
</ul>
<ul style="float:left;">
<li>
<a href="<?php echo SITE_URL . 'admin/category/list.php'; ?>">Danh sách danh mục sản phẩm</a>
</li>
<li>
<a href="<?php echo SITE_URL . 'admin/category/add.php'; ?>">Thêm mới danh mục sản phẩm</a>
</li>
</ul>
<ul style="float:left;">
<li>
<a href="<?php echo SITE_URL . 'admin/product/list.php'; ?>">Danh sách sản phẩm</a>
</li>
<li>
<a href="<?php echo SITE_URL . 'admin/product/add.php'; ?>">Thêm mới sản phẩm</a>
</li>
</ul>
<ul style="float:left;">
<li>
<a href="<?php echo SITE_URL . 'admin/user/list.php'; ?>">Danh sách thành viên</a>
</li>
<li>
<a href="<?php echo SITE_URL . 'admin/user/add.php'; ?>">Thêm mới thành viên</a>
</li>
</ul>

<div style="clear:both;"></div>
</div>

* Cách 2:

Trong thư mục views/admin, các bạn tạo mới thư mục tên là common.

Trong thư mục views/admin/common, các bạn tạo file menu.tpl.php để trình bày giao diện menu.

Nội dung file views/admin/common/menu.tpl.php như sau:
HTML:
<div>
<ul style="float:left;">
<li>
<a href="<?php echo SITE_URL . 'admin'; ?>">Trang chủ</a>
</li>
</ul>
<ul style="float:left;">
<li>
<a href="<?php echo SITE_URL . 'admin/category/list.php'; ?>">Danh sách danh mục sản phẩm</a>
</li>
<li>
<a href="<?php echo SITE_URL . 'admin/category/add.php'; ?>">Thêm mới danh mục sản phẩm</a>
</li>
</ul>
<ul style="float:left;">
<li>
<a href="<?php echo SITE_URL . 'admin/product/list.php'; ?>">Danh sách sản phẩm</a>
</li>
<li>
<a href="<?php echo SITE_URL . 'admin/product/add.php'; ?>">Thêm mới sản phẩm</a>
</li>
</ul>
<ul style="float:left;">
<li>
<a href="<?php echo SITE_URL . 'admin/user/list.php'; ?>">Danh sách thành viên</a>
</li>
<li>
<a href="<?php echo SITE_URL . 'admin/user/add.php'; ?>">Thêm mới thành viên</a>
</li>
</ul>

<div style="clear:both;"></div>
</div>

Mở tất cả các file giao diện (View) ngoại trừ file views/admin/user/login.tpl.php và thêm vào dòng mã lệnh PHP sau ngay kề dưới thẻ <body>:
PHP:
<?php require '../common/menu.tpl.php'; ?>

Cả hai cách đều cho ra cùng một kết quả, tuy nhiên nên lựa chọn cách nào thì các bạn tự suy xét.

Đây là phần cuối cùng trong phần quản trị (Admin). Kể từ phần sau tôi sẽ hướng dẫn các bạn thực hiện các trang trong phần người dùng (Front).
 
TRANG CHỦ (PHẦN 22)

Kể từ phần này tôi sẽ hướng dẫn các bạn thực hiện các trang người dùng (Front).

Trang chủ website tôi chỉ trình bày danh sách 6 sản phẩm mới nhất. Các bạn muốn trình bày thêm các thông tin khác thì các bạn có thể tìm hiểu thêm hoặc thảo luận tại phần này.

Tại thư mục gốc (Root), các bạn tạo file index.php để viết mã lệnh xử lý trang chủ.

Nội dung file index.php như sau:
PHP:
<?php
//Require các file cần thiết
require 'configs/config.php';
require 'libraries/connect.php';
require 'models/product.php';

//Lấy danh sách 6 sản phẩm mới nhất
$product_latest_list = get_product_latest_list();

//Require file giao diện (View)
require 'views/front/home/home.tpl.php';
?>

Mở file models/product.php và viết thêm vào khối lệnh mới dưới đây:
PHP:
function get_product_latest_list($limit = 6){
//SQL
$sql = "SELECT * FROM tbl_product ORDER BY product_id DESC LIMIT 0, $limit";

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

Trong thư mục views/front, tạo mới thư mục tên là home để chứa các file trình bày giao diện trang chủ.

Trong thư mục views/front/home, tạo mới file home.tpl.php để trình bày giao diện trang chủ.

Nội dung file views/front/home/home.tpl.php như sau:
HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Website giới thiệu sản phẩm - Trang chủ</title>
</head>
<body>

<?php while($product_latest = mysql_fetch_assoc($product_latest_list)): ?>
<div style="padding:10px;">
<p>
<img src="<?php echo SITE_URL . 'userfiles/' . $product_latest['image']; ?>" />
</p>
<h4>
<a href="<?php echo SITE_URL . 'product-detail.php?product_id=' . $product_latest['product_id']; ?>"><?php echo $product_latest['name']; ?></a>
</h4>
<p><?php echo number_format($product_latest['price'], 0, '', '.'); ?> VNĐ</p>
</div>
<?php endwhile; ?>

</body>
</html>

Các bạn truy cập trang chủ theo địa chỉ https://localhost để kiểm tra.
 
TRANG DANH SÁCH SẢN PHẨM (PHẦN 23)

Tại thư mục gốc (Root), các bạn tạo mới file product-list.php để viết mã lệnh xử lý trang danh sách sản phẩm.

Nội dung file product-list.php như sau:
PHP:
<?php
//Require các file cần thiết
require 'configs/config.php';
require 'libraries/connect.php';
require 'models/product.php';

//Lấy category_id từ URL (Nếu có)
$category_id = isset($_GET['category_id']) ? ((int)$_GET['category_id']) : null;

//Lấy danh sách sản phẩm
$product_active_list = get_product_active_list($category_id);

//Require file giao diện (View)
require 'views/front/product/list.tpl.php';
?>

Mở file models/product.php và viết thêm vào khối lệnh mới dưới đây:
PHP:
function get_product_active_list($category_id){
//SQL
$sql = "SELECT * FROM tbl_product WHERE status = 1";

//Nếu lấy sản phẩm theo danh mục
if($category_id != null){
$sql .= " AND category_id = $category_id";
}

//Sắp xếp
$sql .= " ORDER BY product_id DESC";

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

Trong thư mục views/front, tạo mới thư mục tên là product để chứa các file trình bày giao diện các trang sản phẩm.

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

Nội dung file views/front/product/list.tpl.php như sau:
HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Website giới thiệu sản phẩm - Danh sách sản phẩm</title>
</head>
<body>

<?php while($product_active = mysql_fetch_assoc($product_active_list)): ?>
<div style="padding:10px;">
<p>
<img src="<?php echo SITE_URL . 'userfiles/' . $product_active['image']; ?>" />
</p>
<h4>
<a href="<?php echo SITE_URL . 'product-detail.php?product_id=' . $product_active['product_id']; ?>"><?php echo $product_active['name']; ?></a>
</h4>
<p><?php echo number_format($product_active['price'], 0, '', '.'); ?> VNĐ</p>
</div>
<?php endwhile; ?>

</body>
</html>

Các bạn truy cập trang danh sách sản phẩm theo địa chỉ https://localhost/product-list.php để kiểm tra.
 
TRANG CHI TIẾT SẢN PHẨM (PHẦN 24)

Tại thư mục gốc (Root), các bạn tạo mới file product-detail.php để viết mã lệnh xử lý trang chi tiết sản phẩm.

Nội dung file product-detail.php như sau:
PHP:
<?php
//Require các file cần thiết
require 'configs/config.php';
require 'libraries/connect.php';
require 'models/product.php';

//Lấy product_id từ URL
$product_id = isset($_GET['product_id']) ? ((int)$_GET['product_id']) : 0;

//Lấy thông tin sản phẩm
$product_active = get_product_active_by_id($product_id);

//Require file giao diện (View)
require 'views/front/product/detail.tpl.php';
?>

Mở file models/product.php và viết thêm vào khối lệnh mới dưới đây:
PHP:
function get_product_active_by_id($product_id){
//SQL
$sql = "SELECT * FROM tbl_product WHERE status = 1 AND product_id = $product_id";

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

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

Trong thư mục views/front/product, tạo mới file detail.tpl.php để trình bày giao diện trang chi tiết sản phẩm.

Nội dung file views/front/product/detail.tpl.php như sau:
HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Website giới thiệu sản phẩm - Chi tiết sản phẩm</title>
</head>
<body>

<div style="padding:10px;">
<p>
<img src="<?php echo SITE_URL . 'userfiles/' . $product_active['image']; ?>" />
</p>
<h4><?php echo $product_active['name']; ?></h4>
<p><?php echo number_format($product_active['price'], 0, '', '.'); ?> VNĐ</p>
</div>

</body>
</html>

Các bạn truy cập trang danh sách sản phẩm, sau đó nhấp vào tên sản phẩm để truy cập trang chi tiết sản phẩm.
 
MENU (PHẦN 25)

Menu website bao gồm hai nhóm menu chính:

- Trang chủ: Liên kết tới trang chủ website.
- Sản phẩm: Liên kết tới trang danh sách sản phẩm. Trong menu sản phẩm sẽ có các menu con tương ứng với các danh mục sản phẩm. Các menu con này được lấy động từ DB (Cụ thể là bảng tbl_category).

Các bạn mở các file xử lý index.php, product-list.php, product-detail.php và chỉnh sửa lại như sau:

- Ngay trước dòng lệnh "require 'models/product.php';", các bạn thêm mới dòng lệnh sau:
PHP:
require 'models/category.php';

- Ngay trước dòng "//Require file giao diện (View)", các bạn thêm mới dòng lệnh sau:
PHP:
$category_active_list = get_category_active_list();

Về phần giao diện trình bày menu, các bạn có hai cách như sau:

Cách 1:

Mở tất cả các file giao diện (View) của phần người dùng (Front) trong thư mục views/front và thêm mới khối lệnh HTML sau ngay sau thẻ <body>:
HTML:
<div style="padding:10px;">
<ul>
<li>
<a href="<?php echo SITE_URL; ?>">Trang chủ</a>
</li>
</ul>

<ul>
<li>
<a href="<?php echo SITE_URL . 'product-list.php'; ?>">Sản phẩm</a>
</li>
<?php while($category_active = mysql_fetch_assoc($category_active_list)): ?>
<li>
<a href="<?php echo SITE_URL . 'product-list.php?category_id=' . $category_active['category_id']; ?>"><?php echo $category_active['name']; ?></a>
</li>
<?php endwhile; ?>
</ul>
</div>

Cách 2:

Trong thư mục views/front, tạo mới thư mục tên là common để chứa các file trình bày giao diện các thành phần chung của website.

Trong thư mục views/front/common, tạo mới file menu.tpl.php để trình bày giao diện menu.

Nội dung file views/front/common/menu.tpl.php như sau:
HTML:
<div style="padding:10px;">
<ul>
<li>
<a href="<?php echo SITE_URL; ?>">Trang chủ</a>
</li>
</ul>

<ul>
<li>
<a href="<?php echo SITE_URL . 'product-list.php'; ?>">Sản phẩm</a>
</li>
<?php while($category_active = mysql_fetch_assoc($category_active_list)): ?>
<li>
<a href="<?php echo SITE_URL . 'product-list.php?category_id=' . $category_active['category_id']; ?>"><?php echo $category_active['name']; ?></a>
</li>
<?php endwhile; ?>
</ul>
</div>

Mở tất cả các file giao diện (View) của phần người dùng (Front) trong thư mục views/front và thêm mới dòng lệnh PHP sau ngay sau thẻ <body>:
PHP:
<?php require '../common/menu.tpl.php'; ?>

Các bạn lựa chọn một trong hai cách để trình bày giao diện menu.

Như vậy, đây là phần cuối cùng về loạt bài "Từng bước học lập trình PHP cơ bản qua dự án website giới thiệu sản phẩm". Tôi lưu ý với các bạn một lần nữa đó là phần hướng dẫn của tôi chỉ mang tính cơ bản nhất với mục đích giúp các bạn mới làm quen với PHP có thể nắm bắt được kiến thức ban đầu cũng như các bước để tạo ra một website cơ bản. Để sản phẩm hoàn thiện và có thể vận hành thực tế thì các bạn còn cần phải tinh chỉnh nhiều thứ nữa.

Mọi vấn đề liên quan tới loạt bài hướng dẫn này, các bạn vui lòng gởi bình luận ở trang Google+ của tôi tại https://plus.google.com/103116221369826139041.


Chân thành cảm ơn sự quan tâm của các bạn!
 
Các bạn có câu hỏi vui lòng reply ở trang Google+ của tôi hoặc chat + voice qua Hangouts tôi sẽ hỗ trợ.
 
Tôi sẽ hỗ trợ các bạn qua Hangouts vào buổi tối (Sau 19h) :)
 
Cảm ơn các bạn đã quan tâm!
 
Hangouts tôi sẽ hỗ trợ các bạn nếu có vấn đề phát sinh.
 
Cho các bạn quan tâm!
 
Cho các bạn quan tâm!
 
Cho các bạn quan tâm.
 
Cho các bạn quan tâm.
 
Cho các bạn quan tâm.
 
×
Quay lại
Top