用纯PHP和yii制作帖子档案?

时间:2013-07-20 09:52:38

标签: php yii archive

我需要创建档案列表(与WP网站中的功能大致相同),但使用PHP和Yii框架。既然我一直在考虑如何完成这项工作并且没有提出任何有用的东西,我在这里请求你的帮助。 例如,mysql表看起来像这样: 列: id(int AI,primary) 标题(varchar) 内容(文字) creation_date(timestamp)

我如何使用timestamp列值,仅选择发布的不同月份中的帖子(以便我可以确定哪些月份需要列出作为相应存档页面的链接,该页面将列出该月下发布的所有帖子)?

顺便说一句,只有帮助我如何用PHP做这件事就足够了,你不必经历使代码与Yii一起工作的麻烦,因为很明显它是不可能的,因为你没有控制器,模型等:))

1 个答案:

答案 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选择,因为我不希望在特定月份的每个帖子上重复几个月。之后我们将它们列为无序列表中的锚点。这是主要问题,其余的很容易做到:)