Uw probleem zit in de vraag:
$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 meeste andere databases dan MySQL zouden deze zoekopdracht afwijzen, omdat je op 2 velden groepeert terwijl je veel velden selecteert.
De group by year, month
zal slechts één (willekeurige) rij van een maand weergeven en alle andere verbergen.
De oplossing is om de group by
clausule volledig en herschrijf de query als volgt:
$sql = "SELECT *,YEAR(FROM_UNIXTIME(timestamp)) AS YEAR,
MONTH(FROM_UNIXTIME(timestamp)) AS MONTH
FROM ".NEWS_ARTICLES." ORDER BY YEAR DESC, MONTH ASC";
Opmerking
Het is vreemd dat je geen WHERE
. hebt clausule. Wil je echt alle . selecteren elke keer artikelen?
Een betere benadering zou zijn om het aantal artikelen dat in de zoekopdracht is geselecteerd te beperken met een filter.
Het is altijd sneller om in de database te filteren dan in php.