Masalah Anda ada di kueri:
$sql = "SELECT *,YEAR(FROM_UNIXTIME(timestamp)) AS YEAR,
MONTH(FROM_UNIXTIME(timestamp)) AS MONTH
FROM ".NEWS_ARTICLES." GROUP BY YEAR, MONTH ORDER BY YEAR DESC, MONTH ";
Sebagian besar basis data selain MySQL akan menolak kueri ini, karena Anda mengelompokkan pada 2 bidang sambil memilih banyak bidang.
The group by year, month
hanya akan menampilkan satu baris (acak) dari satu bulan dan menyembunyikan yang lainnya.
Solusinya adalah membuang group by
klausa seluruhnya dan tulis ulang kueri seperti ini:
$sql = "SELECT *,YEAR(FROM_UNIXTIME(timestamp)) AS YEAR,
MONTH(FROM_UNIXTIME(timestamp)) AS MONTH
FROM ".NEWS_ARTICLES." ORDER BY YEAR DESC, MONTH ASC";
Keterangan
Aneh karena Anda tidak memiliki WHERE
ayat. Apakah Anda benar-benar ingin memilih semua artikel setiap saat?
Pendekatan yang lebih baik adalah membatasi jumlah artikel yang dipilih dalam kueri dengan beberapa filter.
Memfilter di database selalu lebih cepat daripada di php.