それはどうですか?
$data = array();
while($row = $stmt->fetch()){
$monthName = date("F", mktime(0, 0, 0, $row['Month'], 10));
$data[$row['Year']][$monthName][] = array(
'post' => $row['postTitle'],
'slug' => 'a-'.$row['Month'].'-'.$row['Year']
);
}
echo '<ul>';
foreach ($data as $year => $yearData){
echo "<li>$year<br/>";
echo '<ul>';
foreach ($yearData as $month => $monthData){
echo "<li>$month<br/>";
echo '<ul>';
foreach ($monthData as $number => $postData){
echo "<li><a href='${postData['slug']}'>Post $number</a><br/>";
echo "<a href='#'>${postData['post']}</a></li>";
}
echo '</ul></li>';
}
echo '</ul></li>';
}
echo '</ul>';
このソリューションはPHPの方法で実行しますが、次のようなSQLクエリでも結果を取得できるはずです。
SELECT
Year(postDate) as Year, Month(postDate) as Month,
GROUP_CONCAT(postTitle) as posts
FROM
blog_posts_seo
GROUP BY Year, Month
ORDER BY postDate DESC
すべき 年と月で関連付けられたすべての投稿を、コンマで区切って1行(テストされていません)で返します。 WITH SEPARATOR
を使用します 別の区切り文字を指定するオプション(ドキュメントを確認してください)。
ドキュメント: