2014-07-25 36 views
0

在我的网站上,我有一个“新闻”页面,客户可以添加无限数量的新闻(日期存储在数据库(与CURRENT_TIMESTAMP))。PHP:档案系统像博客

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

现在,我只有这个:

<?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>"; 
    }     
?> 

=>

但我想这一点:

https://imagizer.imageshack.us/v2/848x381q90/905/wDH7bi.png

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

有人可以帮我吗?

编辑:

经过大量的研究,我发现合并同月的解决方案:

<?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>"; 
    } 
?> 

月是正确合并,但现在我有解决不了另一个问题:

https://imagizer.imageshack.us/v2/813x334q90/540/cks3fp.png

我真的不知道该怎么做还是怎么做。有人知道什么?

回答

0

假设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>"; 
    }     
?> 
+0

谢谢Patrick Q!它工作得很好!但像图片一样,我想“倒闭”几个月,不止一次出现,当我点击时,只显示我选择的月份新闻。那可能吗 ? – takumaterasu

+0

当然,但这超出了写作这个问题的范围。可能甚至超出此类网站的范围。至少没有你自己先做更多的工作。 –