Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mengelompokkan arsip berdasarkan tahun dan bulan menggunakan php dan mysql

Bagaimana dengan itu?

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

Solusi ini melakukannya dengan cara PHP, tetapi Anda juga harus bisa mendapatkan hasilnya dengan kueri SQL, dengan sesuatu seperti:

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

yang harus kembalikan semua posting yang terkait dengan tahun dan bulan dalam satu baris (tidak diuji), dipisahkan dengan koma. Gunakan WITH SEPARATOR opsi untuk menentukan pemisah yang berbeda (periksa dokumen).

Dokumentasi:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Normalisasi basis data untuk sistem perpesanan seperti facebook

  2. Tabel database dinamis di Django

  3. Pelanggaran konsistensi MySQL GTID

  4. Bagaimana cara menguji apakah suatu string adalah JSON atau bukan?

  5. Bagaimana cara mengubah string menjadi desimal?