Xin hỏi về hiển thị dữ liệu theo từng tháng của năm trong php

Thảo luận trong 'MySQL' bắt đầu bởi huongbibi, 6/12/15.

  1. huongbibi

    huongbibi Lính mới

    Tham gia ngày:
    6/12/15
    Bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    1
    Các bác cho em hỏi là em có một bảng tin tức chứa tin tức của 2 năm 2014 và 2015. Giờ em muốn hiển thị dữ liệu theo tháng của từng năm thì làm như nào hả các bác?

    Ví dụ:

    Năm 2014
    Danh sách bài viết tháng 1-2014
    Danh sách bài viết tháng 2-2014
    Danh sách bài viết tháng 3-2014
    Danh sách bài viết tháng 4-2014
    Danh sách bài viết tháng 5-2014
    Danh sách bài viết tháng 6-2014
    Danh sách bài viết tháng 7-2014
    Danh sách bài viết tháng 8-2014
    Danh sách bài viết tháng 9-2014
    Danh sách bài viết tháng 10-2014
    Danh sách bài viết tháng 11-2014
    Danh sách bài viết tháng 12-2014

    Năm 2015
    Danh sách bài viết tháng 1-2015
    Danh sách bài viết tháng 2-2015
    Danh sách bài viết tháng 3-2015
    Danh sách bài viết tháng 4-2015
    Danh sách bài viết tháng 5-2015
    Danh sách bài viết tháng 6-2015
    Danh sách bài viết tháng 7-2015
    Danh sách bài viết tháng 8-2015
    Danh sách bài viết tháng 9-2015
    Danh sách bài viết tháng 10-2015
    Danh sách bài viết tháng 11-2015
    Danh sách bài viết tháng 12-2015


    $query = ' SELECT * FROM tin_tuc ORDER BY ngaydang DESC';
    $sql = $db->query($query);
    $rows = $db->getObjectList();

    foreach($rows as $item){

    echo $item->name;

    }
     
  2. babyinternet

    babyinternet Administrator

    Tham gia ngày:
    4/7/08
    Bài viết:
    4,655
    Đã được thích:
    1,583
    Điểm thành tích:
    113
    Nơi ở:
    [}{]e[][]
    Muốn hiển thị cái DANH SÁCH NGÀY THÁNG có bài viết thì bạn có thể query như sau:

    Mã:
    SELECT count(id), YEAR(ngaydang), MONTH(ngaydang) FROM `tin_tuc` GROUP BY YEAR(ngaydang), MONTH(ngaydang) ORDER BY ngaydang DESC
    Cái này mình viết để trả về 3 cột: năm, tháng và số lượng bài viết tương ứng trong tháng. Sử dụng 3 thông tin này như thế nào là tùy bạn.

    Còn để lấy cụ thể các bài viết trong tháng thì có thể query bằng 2 cách:

    Mã:
    SELECT * FROM `tin_tuc` WHERE `ngaydang` LIKE '2010-08%'
    Câu query trên lợi dụng so sánh chuỗi (string) về căn bản là hàng chế để phục vụ công việc cho nó lẹ làn nhanh chóng :hehe:

    Hoặc là:

    Mã:
    SELECT * FROM `tin_tuc` WHERE YEAR(`ngaydang`)= 2010 AND MONTH(ngaydang) = 8
    Câu query này so sánh chính xác tháng và năm theo kiểu datetime nên tính ra là nó "hợp quy" hơn :boss:

    Chúc bạn thành công.

    P/S: chuyển vô mục MySQL nhá !
     
  3. huongbibi

    huongbibi Lính mới

    Tham gia ngày:
    6/12/15
    Bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    1
    Em đã làm theo cách đầu tiên của bác babyinternet thì ok, đã liệt kê ra từng tháng như bên dưới rồi.

    stdClass Object
    (
    [count(id)] => 191
    [YEAR(created_time)] => 2015
    [MONTH(created_time)] => 11
    )
    stdClass Object
    (
    [count(id)] => 522
    [YEAR(created_time)] => 2015
    [MONTH(created_time)] => 10
    )
    stdClass Object
    (
    [count(id)] => 51
    [YEAR(created_time)] => 2015
    [MONTH(created_time)] => 9
    )
    stdClass Object
    (
    [count(id)] => 79
    [YEAR(created_time)] => 2015
    [MONTH(created_time)] => 8
    )


    Bác cho em hỏi là để hiển thị bài viết của mỗi tháng vào ul list thì làm như nào hả bác, em phải viết foreach() như nào ah, cảm ơn bác rất nhiều...

    <ul>Tháng 10-2015
    <li>Bài viết 1</li>
    <li>Bài viết 2</li>
    <li>Bài viết 3</li>
    <li>Bài viết 4</li>
    <li>Bài viết 5</li>
    </ul>
     
    Chỉnh sửa cuối: 7/12/15
Đang tải...

Chia sẻ trang này