我需要创建档案列表(与WP网站中的功能大致相同),但使用PHP和Yii框架。既然我一直在考虑如何完成这项工作并且没有提出任何有用的东西,我在这里请求你的帮助。 例如,mysql表看起来像这样: 列: id(int AI,primary) 标题(varchar) 内容(文字) creation_date(timestamp)
我如何使用timestamp列值,仅选择发布的不同月份中的帖子(以便我可以确定哪些月份需要列出作为相应存档页面的链接,该页面将列出该月下发布的所有帖子)?
顺便说一句,只有帮助我如何用PHP做这件事就足够了,你不必经历使代码与Yii一起工作的麻烦,因为很明显它是不可能的,因为你没有控制器,模型等:))答案 0 :(得分:0)
对于那些投票支持我的问题的人来说,你真的很有帮助。我猜仇恨甚至存在于这类网站上,这很难过。无论如何,关于他们,这是我今天通过学习新的MySQL功能,我之前不知道存在的东西:)
您可以使用MySQL DATE_FORMAT(date_column,'%format')
来选择所需的月,年,日或日期的任何其他“部分”,即使日期是在unix时间戳中。这是一个简单的代码,我想了一些摆弄。
$query = "SELECT DISTINCT DATE_FORMAT(creation_date,'%M') as creation_month, DATE_FORMAT(creation_date,'%Y') as creation_year FROM posts";
$result = $connection->query($query);
if($result) {
while($row = $result->fetch_assoc()) {
$archiveArray[] = $row;
}
print_r($archiveArray);
echo '<h3>Our Archives by month</h3>';
echo '<ul>';?>
<?php foreach($archiveArray as $archiveRecord) : ?>
<li>
<a href=""><?php echo $archiveRecord['creation_month'] . ' ' . $archiveRecord['creation_year']; ?></a>
</li>
<?php endforeach;
echo '</ul>';
}
这段代码的作用是“读取”DB中“creation_date”列中的时间戳,将其置于所需的“格式”中,该格式由%M和%Y指定(类似于PHP date()函数格式化)并在运行中分配给名为craetion_month和creation_year的虚拟列名。请注意DISTINCT选择,因为我不希望在特定月份的每个帖子上重复几个月。之后我们将它们列为无序列表中的锚点。这是主要问题,其余的很容易做到:)