आपकी समस्या प्रश्न में है:
$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 ";
MySQL के अलावा अधिकांश डेटाबेस इस क्वेरी को अस्वीकार कर देंगे, क्योंकि आप कई फ़ील्ड का चयन करते हुए 2 फ़ील्ड पर समूह बना रहे हैं।group by year, month एक महीने से केवल एक (यादृच्छिक) पंक्ति प्रदर्शित करेगा और अन्य सभी को छुपाएगा।
समाधान यह है कि group by . द्वारा छोड़ दिया जाए पूरी तरह से क्लॉज करें और क्वेरी को इस तरह फिर से लिखें:
$sql = "SELECT *,YEAR(FROM_UNIXTIME(timestamp)) AS YEAR,
MONTH(FROM_UNIXTIME(timestamp)) AS MONTH
FROM ".NEWS_ARTICLES." ORDER BY YEAR DESC, MONTH ASC";
टिप्पणी
यह अजीब है कि आपके पास WHERE नहीं है खंड। क्या आप वाकई सभी . चुनना चाहते हैं हर बार लेख?
एक बेहतर तरीका यह होगा कि कुछ फ़िल्टर द्वारा क्वेरी में चयनित लेखों की संख्या को सीमित कर दिया जाए।
यह हमेशा php के बजाय डेटाबेस में फ़िल्टर करने के लिए तेज़ होता है।