Ihr Problem liegt in der Abfrage:
$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 ";
Die meisten Datenbanken außer MySQL würden diese Abfrage ablehnen, weil Sie nach 2 Feldern gruppieren, während Sie viele Felder auswählen.
Die group by year, month
zeigt nur eine einzelne (zufällige) Zeile eines Monats an und blendet alle anderen aus.
Die Lösung besteht darin, group by
zu löschen -Klausel vollständig und schreiben Sie die Abfrage wie folgt um:
$sql = "SELECT *,YEAR(FROM_UNIXTIME(timestamp)) AS YEAR,
MONTH(FROM_UNIXTIME(timestamp)) AS MONTH
FROM ".NEWS_ARTICLES." ORDER BY YEAR DESC, MONTH ASC";
Bemerkung
Es ist seltsam, dass Sie kein WHERE
haben Klausel. Möchten Sie wirklich alle auswählen? Artikel jedes Mal?
Ein besserer Ansatz wäre, die Anzahl der in der Abfrage ausgewählten Artikel durch einen Filter zu begrenzen.
Es ist immer schneller, in der Datenbank zu filtern als in PHP.