【问题标题】:Php: Archives system like blogPHP:像博客一样的档案系统
【发布时间】:2014-07-25 19:26:22
【问题描述】:

在我的网站上,我有一个“新闻”页面,客户可以在其中添加无限数量的新闻(日期存储在数据库中(使用 CURRENT_TIMESTAMP))。

例如当用户点击七月时,页面上只会出现七月的新闻。

目前,我只有这个:

<?php
    $q = $db->query("SELECT dateNews FROM news GROUP BY dateNews");

    while($data = $q->fetch()){
        $dateMonth= $data['dateNews'];
        echo "<a href='#''><p>".strftime('%B %Y', strtotime($dateMonth))."</span></p></a>";
    }                   
?>

但我想要这个:

我的日期列出正确,但我真的不知道如何解决问题。

有人可以帮帮我吗?

编辑:

经过大量研究,我找到了同月合并的解决方案:

<?php                   
    $q = $db->query("SELECT YEAR(dateNews) AS YEAR, MONTH(dateNews) AS MONTH, COUNT(*) AS newsCount FROM news GROUP BY YEAR, MONTH");

    while($data = $q->fetch()){
        $dateMonth = $data['MONTH'];
        echo "<a href='#''><p>".utf8_encode(strftime('%B %Y', strtotime($dateMonth)))." (" . $data['newsCount'] . ")</span></p></a>";
    }
?>

月份已正确合并,但现在我遇到了另一个无法解决的问题:

我真的不知道该做什么或怎么做。有人知道吗?

【问题讨论】:

    标签: php html date blogs archive


    【解决方案1】:

    假设dateNews 是月份(看起来是这样),那么您就差不多知道了。您只需要同时选择每个分组的计数,然后显示它。

    <?php
        $q = $db->query("SELECT dateNews, COUNT(*) AS newsCount FROM news GROUP BY dateNews");
    
        while($data = $q->fetch()){
            $dateMonth= $data['dateNews'];
            echo "<a href='#''><p>".strftime('%B %Y', strtotime($dateMonth))." (" . $data['newsCount'] . ")</span></p></a>";
        }                   
    ?>
    

    【讨论】:

    • 感谢帕特里克 Q!它工作得很好!但就像图像一样,我想“折叠”多次出现的月份,并在我点击时仅显示我选择的月份的新闻。这可能吗?
    • 当然,但这超出了书面问题的范围。甚至可能超出了这样的网站的范围。至少不用你自己做更多的工作。
    猜你喜欢
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2014-02-26
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    相关资源
    最近更新 更多