Bài 24: PHP trang tin tức - Hiển thị danh sách bài viết mới nhất

Ngày đăng: 2023-01-10 13:42:13

         Trong bài hôm trước, chúng ta đã cùng nhau xây dựng các layout cho ứng dụng rồi,  hôm nay chúng ta sẽ code hiển thị danh sách bài viết mới nhất nhé. 

Mục lục:

            1. Rewrite url phân trang bài viết mới nhất

            2. Hiển thị danh sách bài viết mới nhất.

            3. Lời kết

1. Rewrite url phân trang bài viết mới nhất

Các bạn mở file .htaccess lên và dán tiếp đoạn code này vào bên dưới:

# Url phân trang bài viết mới nhất

RewriteRule ^([0-9]+)$ index.php?p=$1

RewriteRule ^([0-9]+)/$ index.php?p=$1

Bây giờ các bạn thử chạy đường dẫn http://localhost/newspage/i (với i là một con số bất kỳ nào đó). Nếu không báo lỗi thì code đã hoạt động rồi đấy!

2. Hiển thị danh sách bài viết mới nhất

Các bạn mở lại file templates/content.php và require file templates/latest-news.php ở dưới dòng comment // code:

require 'templates/latest-news.php';

Tiếp theo các bạn mở file templates/latest-news.php lên và copy nội dung này vào:

<div class="container">

    <div class="row">

    <?php

 

    // Lấy số hàng trong table

    $sqlGetCountPost = "SELECT id_post FROM posts";

    $countPost = $db->num_rows($sqlGetCountPost);

 

    // Lấy tham số trang

    if (isset($_GET['p'])) {

      $page = trim(htmlspecialchars(addslashes($_GET['p'])));

 

      if (preg_match('/\d/', $page)) {

        $page = $page;

      } else {

        $page = 1;

      }

    } else {

      $page = 1;

    }

 

    $limit = 20; // Giới hạn số bài viết hiển thị trong 1 trang

    $totalPage = ceil($countPost / $limit); // Tổng số trang sau khi tính toán

         

    // Validate tham số page   

    if ($page > $totalPage) {

      $page = $totalPage;

    } else if ($page < 1) {

      $page = 1;

    }

       

    $start = ($page - 1) * $limit;

 

    $sql_get_latest_news = "SELECT * FROM posts WHERE status = '1' ORDER BY id_post DESC LIMIT $start, $limit";

    if ($db->num_rows($sql_get_latest_news)) {

        foreach ($db->fetch_assoc($sql_get_latest_news, 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>

            ';

        }

 

        echo '</div>';

 

        echo '

            <div class="btn-toolbar" role="toolbar">

                <div class="btn-group">

        ';

 

        # Pagination button

        if ($page > 1 && $totalPage > 1) {

            echo '

                <a href="' . $_DOMAIN . ($page - 1 ) . '" class="btn btn-default">

                    <span class="glyphicon glyphicon-chevron-left"></span>

                </a>

            ';

        }

        

        for ($i = 1; $i <= $totalPage; $i++) {

            if ($i == $page){

                echo '<a class="btn btn-primary">' . $i . '</a>';

            } else {

                echo '

                    <a href="' . $_DOMAIN . $i . '" class="btn btn-default">

                        ' . $i . '

                    </a>

                ';

            }

        }

        

        if ($page < $totalPage && $totalPage > 1) {

            echo '

                <a href="' . $_DOMAIN . ($page + 1 ) . '" class="btn btn-default">

                    <span class="glyphicon glyphicon-chevron-right"></span>

                </a>

            ';

        }

 

        echo '

                </div>

            </div>

        ';

    }

 

    ?>

</div>

Chắc các bạn hiểu đoạn code trên rồi chứ? Nếu bạn đã nắm được PHP cơ bạn thì mình nghĩ nó sẽ không thể nào làm khó bạn được phải không nào :

Ok! Giờ chỉ việc refresh lại trang rồi chiêm ngưỡng thành quả thôi:

php trang tin tuc hien thi danh sach bai viet moi nhat ket qua JPG

Mình đoán là các bạn đang thắc mắc tại sao $limit = 20 mà tại sao trên hình của mình chỉ có 1 kết quả :v Đó là do mình làm biếng tạo data nên đã chỉnh $limit = 1 để làm ảnh kết quả cho các bạn thôi chứ không có gì hết.

3. Lời kết

         Qua bài này chúng ta đã có thể tạo một trang homepage cho ứng dụng tin tức rồi, các bạn cũng đã làm quen với cách thức phân trang với PHP cơ bản. Ở bài sau chúng ta sẽ cùng xây dựng trang hiển thị danh sách bài viết của chuyên mục. Nếu có thắc mắc gì các bạn cứ comment bên dưới mình sẽ hỗ trợ các bạn. Cảm ơn các bạn đã theo dõi, chúc các bạn thành công!


Code games & Web Làm web tin tức căn bản bằng PHP

Bài viết trong cùng chuyên mục

Góc games giải trí



Cờ caro


Butterfly


Lật hình (luyện trí nhớ)

Cờ tướng ONLINE

Xếp hình

Ghép hình

15_PUZZLE

Kill ghosts

Banchim

Planet Defense

Tower game

Tower game

Plapy Bird (NH.Đông)

Vượt chướng ngại vật



0379136392

Thông tin liên hệ: Lê Văn Thuyên - ĐT: 0379136392 ; Gmail: lethuyen0379136392@gmail.com

Comment

 +   Lê Văn Thuyên-0379136392:Cảm ơn quý vị và các bạn đã vào Website của Lê Thuyên! Lê thuyên rất mong nhận được sự góp ý của quý vị và các bạn cho sự phát triển của website này. Xin chân thành cảm ơn!

Trả lời

 *   Dũng Trung-090567448:Lê Văn Thuyên0379136392--->Ok.Anh!

Trả lời

 *   Bé Nguyễn-benguyen@gmail,com:Lê Văn Thuyên0379136392--->Good job!

Trả lời

 +   -:

Trả lời

 +   -:

Trả lời

12738