Twój problem dotyczy zapytania:
$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 ";
Większość baz danych innych niż MySQL odrzuci to zapytanie, ponieważ grupujesz na 2 polach, a jednocześnie wybierasz wiele pól.group by year, month
wyświetli tylko jeden (losowy) wiersz z miesiąca i ukryje wszystkie pozostałe.
Rozwiązaniem jest usunięcie group by
w całości i przepisz zapytanie w następujący sposób:
$sql = "SELECT *,YEAR(FROM_UNIXTIME(timestamp)) AS YEAR,
MONTH(FROM_UNIXTIME(timestamp)) AS MONTH
FROM ".NEWS_ARTICLES." ORDER BY YEAR DESC, MONTH ASC";
Uwaga
To dziwne, że nie masz WHERE
klauzula. Czy na pewno chcesz wybrać wszystkie artykuły za każdym razem?
Lepszym podejściem byłoby ograniczenie liczby artykułów wybranych w zapytaniu przez jakiś filtr.
Zawsze jest szybciej filtrować w bazie danych niż w php.