gpt4 book ai didi

php - 使用 PHP MySql 的高级新闻存档年/月

转载 作者:可可西里 更新时间:2023-11-01 08:17:35 25 4
gpt4 key购买 nike

我在 MySQL 数据库中插入带有 timestamp 的新闻日期。现在我需要像这样对我的新闻进行高级存档:

2013

July (4)
News 1
News 2
News 3
News 4
December (2)
News 1
News 2
NovemberPrint (4)
News 1
News 2
News 3
News 4
2014
January (8)
News 1
News 2
News 3
News 4
News 5
News 6
News 7
News 8

现在我需要任何 PHP 函数MySQL SELECT 结构来使用 PDO 或 MySQL 查询打印它。

在线示例 HERE

编辑: 我发现这个问题来自 Here :

$sql = "SELECT YEAR(FROM_UNIXTIME(timestamp)) AS YEAR, 
MONTHNAME(FROM_UNIXTIME(timestamp)) AS MONTH,
COUNT(*) AS TOTAL
FROM NEWS GROUP BY YEAR, MONTH ORDER BY YEAR DESC, MONTH ";
$newsdata = DataAccess::ArrayFetch($sql);

$currentYear = null;

foreach($newsdata AS $news){
if ($currentYear != $news['YEAR']){
echo '<h2>'.$news['YEAR'].'<h2>';
$currentYear = $news['YEAR'];
}
echo '<dd>'.$news['MONTH'].'<dd><dt>'.$news['TOTAL'].'</dt>';
}

但是,此打印仅按年份和月份计数和分组。我需要在每个月后列出文章。

最佳答案

如果您还需要各个文章的名称,则不能使用 GROUP BY。只需获取整个列表,然后按年和月分组到一个数组中。

$sql = "SELECT timestamp, your_id_column, your_title_column FROM `NEWS` ORDER BY timestamp DESC";

$newsdata = DataAccess::ArrayFetch($sql);

$nav = array();

foreach ( $newsdata as $news ) {
$year = date('Y', $news['timestamp']);
$month = date('F', $news['timestamp']);
$nav[$year][$month][$news['your_id_column']] = $news['your_title_column'];
}

当您迭代生成的数组时,您可以计算每年/每月的新闻条目以生成总数。

<ul>
<?php
foreach ( $nav as $k => $v ) {
?>
<li><?php echo $k ?>
<ul>
<?php
foreach ( $v as $k2 => $v2 ) {
?>
<li><?php echo $k2.' ('.sizeof($v2).')' ?>
<ul>
<?php
foreach ( $v2 as $k3 => $v3 ) {
?>
<li><?php echo $v3 ?></li>
<?php
}
?>
</ul>
</li>
<?php
}
?>
</ul>
</li>
<?php
}
?>
</ul>

关于php - 使用 PHP MySql 的高级新闻存档年/月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20957249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com