Ditt problem ligger i frågan:
$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 ";
De flesta andra databaser än MySQL skulle avvisa den här frågan, eftersom du grupperar på 2 fält samtidigt som du väljer många fält.group by year, month
kommer bara att visa en enda (slumpmässig) rad från en månad och dölja alla andra.
Lösningen är att släppa group by
sats helt och skriv om frågan så här:
$sql = "SELECT *,YEAR(FROM_UNIXTIME(timestamp)) AS YEAR,
MONTH(FROM_UNIXTIME(timestamp)) AS MONTH
FROM ".NEWS_ARTICLES." ORDER BY YEAR DESC, MONTH ASC";
Anmärkning
Det är konstigt att du inte har en WHERE
klausul. Vill du verkligen välja alla artiklar varje gång?
Ett bättre tillvägagångssätt skulle vara att begränsa antalet valda artiklar i frågan med något filter.
Det går alltid snabbare att filtrera i databasen snarare än i php.