sql >> Databasteknik >  >> RDS >> Mysql

gruppera arkiv efter år och månad med php och mysql

Vad sägs om det?

$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>';

Denna lösning gör det på PHP-sättet, men du bör kunna få resultatet med en SQL-fråga också, med något som:

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

vilket bör returnera alla inlägg som är relaterade efter år och månad på en enda rad (ej testade), separerade med kommatecken. Använd WITH SEPARATOR alternativet för att ange en annan avgränsare (kontrollera dokumentet).

Dokumentation:




  1. Ansluter till Oracle 12c Database från Pentaho Data Integration (Kettle) Community Edition

  2. Hur man får åtkomst till PhpMyAdmin utan cPanel-inloggning

  3. Hur LOAD_FILE()-funktionen fungerar i MySQL

  4. Flera räkningar och en grupp av