PHP:像博客一样的档案系统
Posted
技术标签:
【中文标题】PHP:像博客一样的档案系统【英文标题】:Php: Archives system like blog 【发布时间】: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>";
?>
月份已正确合并,但现在我遇到了另一个无法解决的问题:
我真的不知道该做什么或怎么做。有人知道吗?
【问题讨论】:
【参考方案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!它工作得很好!但就像图像一样,我想“折叠”多次出现的月份,并在我点击时仅显示我选择的月份的新闻。这可能吗? 当然,但这超出了书面问题的范围。甚至可能超出了这样的网站的范围。至少不用你自己做更多的工作。以上是关于PHP:像博客一样的档案系统的主要内容,如果未能解决你的问题,请参考以下文章