Dit problem er i forespørgslen:
$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 fleste andre databaser end MySQL ville afvise denne forespørgsel, fordi du grupperer på 2 felter, mens du vælger mange felter.Grupper efter år, måned
vil kun vise en enkelt (tilfældig) række fra en måned og skjule alle de andre.
Løsningen er at droppe gruppen efter
klausul fuldstændigt og omskriv forespørgslen sådan:
$sql = "SELECT *,YEAR(FROM_UNIXTIME(timestamp)) AS YEAR,
MONTH(FROM_UNIXTIME(timestamp)) AS MONTH
FROM ".NEWS_ARTICLES." ORDER BY YEAR DESC, MONTH ASC";
Bemærkning
Det er mærkeligt, at du ikke har en Hvor klausul. Vil du virkelig vælge alle artikler hver gang?
En bedre tilgang ville være at begrænse antallet af udvalgte artikler i forespørgslen med et eller andet filter.
Det er altid hurtigere at filtrere i databasen frem for i php.