使用PHP MySql的高级新闻存档年/月

使用PHP MySql的高级新闻存档年/月,php,mysql,Php,Mysql,我在MySQL数据库中插入带有时间戳的新闻日期。现在我需要对我的新闻进行高级归档,如下所示: 2013 July (4) News 1 News 2 News 3 News 4 December (2) News 1 News 2 NovemberPrint (4) News 1 News 2

我在
MySQL
数据库中插入带有
时间戳的新闻日期。现在我需要对我的新闻进行高级归档,如下所示:

2013

    July (4)
         News 1 
         News 2 
         News 3 
         News 4 
    December (2)
         News 1 
         News 2 
    NovemberPrint (4)
         News 1 
         News 2 
         News 3 
         News 4 
2014
    January (8)
         News 1 
         News 2 
         News 3 
         News 4 
         News 5 
         News 6 
         News 7 
         News 8
现在我需要任何
PHP函数
MySQL选择
结构,以便使用PDO或MySQL查询打印此文件

在线示例

编辑:我从以下地址找到此问题:

$sql=“选择年份(从UNIXTIME(时间戳))作为年份,
MONTHNAME(从UNIXTIME(时间戳))作为月份,
将(*)计为总数
从新闻组按年份、月份、顺序、说明、月份”;
$newsdata=DataAccess::ArrayFetch($sql);
$currentYear=null;
foreach($newsdata作为$news){
如果($currentYear!=$news['YEAR'])){
回声“.$news['YEAR']”;
$currentYear=$news['YEAR'];
}
回显“.$news['MONTH']..”.$news['TOTAL'..”;
} 

但是,这张照片只按年份和月份分类。我需要在每个月之后列出文章。

您需要使用MySQL来实现这一点:

ORDER BY DATE(actionTime)

只需按日期对结果排序,而不是将其分组,并将计数(*)替换为一个*

如果您还需要单个文章的名称,则不能使用分组依据。只需获取整个列表,然后按年份和月份分组到一个数组中

$sql = "SELECT timestamp, your_id_column, your_title_column FROM `NEWS` ORDER BY timestamp DESC";

$newsdata = DataAccess::ArrayFetch($sql);

$nav = array();

foreach ( $newsdata as $news ) {
    $year = date('Y', $news['timestamp']);
    $month = date('F', $news['timestamp']);
    $nav[$year][$month][$news['your_id_column']] = $news['your_title_column'];
}
当您迭代生成的数组时,您可以计算每年/每月的新闻项以生成总数

<ul>
    <?php
    foreach ( $nav as $k => $v ) {
        ?>
        <li><?php echo $k ?>
            <ul>
            <?php
            foreach ( $v as $k2 => $v2 ) {
                ?>
                <li><?php echo $k2.' ('.sizeof($v2).')' ?>
                    <ul>
                        <?php
                        foreach ( $v2 as $k3 => $v3 ) {
                            ?>
                            <li><?php echo $v3 ?></li>
                            <?php   
                        }
                        ?>
                    </ul>
                </li>
                <?php
            }
            ?>
            </ul>
        </li>
        <?php
    }
    ?>
</ul>
试试看:

SELECT YEAR(creation_date), MONTH(creation_date), COUNT(id) from news GROUP BY YEAR(creation_date), MONTH(creation_date)

我也需要很多!但是你做了什么来解决你的问题呢?我们需要你的代码Alex.DX,除非你想让我们从头开始编写代码,这是不会发生的。@Sergio和JakeGloud我在编辑中添加了简单的代码。
SELECT YEAR(creation_date), MONTH(creation_date), COUNT(id) from news GROUP BY YEAR(creation_date), MONTH(creation_date)