2016-07-05 14 views
0
arbeiten

Ich habe diesen Code für die Show monatlichen Daten mit PHP und MySQL:PHP MySQL Druck monatliche Datenarray() nicht

$sql = "SELECT title,timestamp,id FROM ".NEWS." ORDER BY timestamp DESC"; 

$data = DataAccess::Fetch($sql); 

$nav = array(); 

foreach ($data as $news) { 
    $month = date('F', $news['timestamp']); 
    $nav[$month][$news['id']] = $news['title']; 
} 

Jetzt In var_export($nav) Mein Ergebnis falsch ist:

array (
    'July' => 
    array (
    277 => 'title1 for July 2016', 
    276 => 'title2 for July 2016', 
    275 => 'title3 for July 2016', 
    273 => 'title4 for July 2016', 
    272 => 'title5 for July 2016', 
    274 => 'title1 for July 2015', 
    264 => 'title2 for July 2015', 
    261 => 'title3 for July 2015', 
), 
'January' => 
    array (
    243 => 'title for January 2016', 
    242 => 'title for January 2015', 
), 
) 

In Ergebnis Ich sehe Marge Daten für Juli 2016 mit Daten mit Juli 2015 Oder Merge Daten für Januar 2016 Mit Januar 2015. Ich muss getrennt Daten für Juli 2016 von Juli 2015 und Januar 2016 von Januar 2015. Wie beheben Problem?

+0

@RiggsFolly: Sicher, wenn ich hinzufügen '$ year = date ('Y', $ news [ 'Zeitstempel']); 'und' $ nav [$ year] [$ month] [$ news ['id']] = $ news ['title']; 'das hat funktioniert Aber ich muss jeden Monat nur mit Daten drucken. Mein Mean ist: Drucke Daten aus der Datenbank für jeden Monat. – NewCod3r

+0

Sie meinen, Sie möchten nur '2016 - Juli' Daten im Bericht anzeigen – RiggsFolly

Antwort

1

Sie verwenden nur den MONTH $month = date('F', $news['timestamp']); als Schlüssel für Ihr $ nav-Array. Sie müssen auch das Jahr verwenden, wenn Sie die Jahrdaten nicht zusammen mischen möchten.

Ich schlage vor, so etwas wie dies möglicherweise

$nav = array(); 

foreach ($data as $news) { 
    $year = date('Y', $news['timestamp']); 
    $month = date('F', $news['timestamp']); 
    $nav[$year][$month][$news['id']] = $news['title']; 
} 

Oder vielleicht

$nav = array(); 

foreach ($data as $news) { 
    $year = date('Y', $news['timestamp']); 
    $month = date('F', $news['timestamp']); 
    $nav[$year . '-' . $month][$news['id']] = $news['title']; 
}