Bài 26: PHP trang tin tức - Hiển thị nội dung bài viết
Hello xin chào tất cả các bạn, chào mừng các bạn đã quay trở lại với series hướng dẫn xây dựng trang tin tức PHP tại Freetuts. Trong bài học trước chúng ta đã cùng nhau xây dựng trang hiển thị danh sách bài viết cho từng chuyên mục. Và hôm nay, mình sẽ hướng dẫn các bạn viết trang hiển thị nội dung cho một bài viết chỉ định. Nào chúng ta bắt đầu thôi!

1. Hiển thị nội dung bài viết
Các bạn mở file templates/posts.php lên và copy nội dung này vào:
<?php
// Get tham số post
$sp = trim(htmlspecialchars(addslashes($_GET['sp'])));
$id = trim(htmlspecialchars(addslashes($_GET['id'])));
// Lấy thông tin bài viết
$sql_get_data_post = "SELECT * FROM posts WHERE id_post = '$id'";
if ($db->num_rows($sql_get_data_post)) {
$data_post = $db->fetch_assoc($sql_get_data_post, 1);
} else {
// Nếu không tồn tại
require 'templates/404.php';
exit;
}
?>
<div class="container">
<div class="row">
<h1><?php echo $data_post['title']; ?></h1>
<div class="body-post">
<?php echo htmlspecialchars_decode($data_post['body']); ?>
</div>
<div class="cate-post">
<?php
// In chuyên mục của bài viết
for ($i = 1; $i <= 3; $i++) {
$id_cate = $data_post['cate_' . $i . '_id'];
if ($id_cate) {
$sql_get_data_cate = "SELECT label, url FROM categories WHERE id_cate = '$id_cate' AND type = '$i'";
if ($db->num_rows($sql_get_data_cate)) {
$data_cate = $db->fetch_assoc($sql_get_data_cate, 1);
echo '<a class="btn btn-primary btn-sm" href="' . $_DOMAIN . 'category/' . $data_cate['url'] . '">' . $data_cate['label'] . '</a> ';
}
}
}
?>
</div>
</div>
<hr>
<div class="row">
<h3>Bài viết liên quan</h3>
<?php
// Hiển thị các bài viết liên quan theo chuyên mục của bài viết chỉ định
$sql_get_invole_post = "SELECT DISTINCT * FROM posts WHERE (cate_1_id = '$data_post[cate_1_id]' OR cate_2_id = '$data_post[cate_2_id]' OR cate_3_id = '$data_post[cate_3_id]') AND status = '1' AND id_post != '$id'";
// Nếu tồn tại các bài viết liên quan
if ($db->num_rows($sql_get_invole_post)) {
// In danh sách bài viết liên quan
foreach ($db->fetch_assoc($sql_get_invole_post, 0) as $data_post) {
echo '
<div class="col-md-3">
<div class="thumbnail">
<a href="' . $_DOMAIN . $data_post['slug'] . '-' . $data_post['id_post'] . '.html">
<img src="' . $data_post['url_thumb'] . '">
</a>
<div class="caption">
<h3><a href="' . $_DOMAIN . $data_post['slug'] . '-' . $data_post['id_post'] . '.html">' . $data_post['title'] . '</a></h3>
<p>' . $data_post['descr'] . '</p>
</div>
</div>
</div>
';
}
// Không tồn tại thì thông báo
} else {
echo '<div class="well well-lg">Không có bài viết liên quan nào.</div>';
}
?>
</div>
</div>- Về phần in chuyên mục của bài viết, vì trong table
postscủa chúng ta có 3 fields chuyên mục nên vòng lặp for sẽ chạy$itừ 1 đến 3. - Về phần bài viết liên quan, mình sẽ lấy các bài viết có chung chuyên mục hoặc lớn hoặc vừa hoặc nhỏ với bài viết chỉ định. Các bạn lưu ý phải có lệnh
DISTINCTđể không select các row giống nhau và điều kiệnid_post = '$id'để không select bài viết chỉ định.
Ok, bây giờ các bạn save rồi chạy lại, chúng ta sẽ có kết quả như hình bên dưới:


Bài viết này được đăng tại [free tuts .net]
2. Lời kết
Bài này có vẻ hơi ngắn một chút nhưng mình hi vọng các bạn đã nắm rõ cách show một bài viết chỉ định theo url, và đã biết cách show các bài viết liên quan đơn giàn theo chuyên mục. Qua bài sau, chúng ta sẽ cùng nhau xây dựng chức năng tìm kiếm cho project này. Nếu có thắc mắc gì các bạn cứ comment bên dưới hoặc đăng trên group kèm theo link bài viết để được hỗ trợ sớm nhất. Cảm ơn các bạn đã theo dõi, chúc các bạn thành công!
Danh sách file tải về
| Tên file tải về | Pass giải nén |
|---|---|
| Bài 26: PHP trang tin tức - Hiển thị nội dung bài viết | freetuts.net hoặc gameportable.net |

Xây dựng chức năng đăng nhập và đăng ký với php và mysql
Bảng mã ASCII chuẩn các hệ nhị phân - thập phân - thập lục phân
Cách khai báo biến trong PHP, các loại biến thường gặp
Bài 26: Hàm isset() và empty() trong php
Các kiểu dữ liệu trong PHP và các loại biến tương ứng
Bài 19: Phương thức GET và POST trong php
Download và cài đặt Vertrigo Server
Bài 20: Các hàm xử lý chuỗi trong php
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng