Váš problém je v dotazu:
$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 ";
Většina databází jiných než MySQL by tento dotaz odmítla, protože seskupujete do 2 polí a přitom vybíráte mnoho polí.
The group by year, month
zobrazí pouze jeden (náhodný) řádek z měsíce a skryje všechny ostatní.
Řešením je vypustit group by
klauzuli úplně a přepište dotaz takto:
$sql = "SELECT *,YEAR(FROM_UNIXTIME(timestamp)) AS YEAR,
MONTH(FROM_UNIXTIME(timestamp)) AS MONTH
FROM ".NEWS_ARTICLES." ORDER BY YEAR DESC, MONTH ASC";
Poznámka
Je zvláštní, že nemáte WHERE
doložka. Opravdu chcete vybrat vše? články pokaždé?
Lepší přístup by bylo omezit počet článků vybraných v dotazu nějakým filtrem.
Vždy je rychlejší filtrovat v databázi než v php.