PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Events in Monaten unterteilt ausgeben


fips
04.12.2006, 16:47:00
Hallo!

Ich habe einen MYSQL Table in dem Events erfasst wurden, jedes Event
hat ein Startdate und ein enddate.

Möchte ich auf einer Seite die Events als Liste in Monate unterteilt ausgeben.

D.h. ich habe eine Zeitspanne von 1.1.2007 - 31.12.2007

Wie kann ich nun mit einer Schleife die Monate ausgeben?

Denn kann kann ich mir wiederrum an jedem ersten und letzten den Timestamp
berechnen und ne SQL Select schreiben.

Mir fehlt im Moment nur die Idee wie ich zu den Monaten in dem Jahr kommen könnte.

Gruß

BenniG.
04.12.2006, 17:24:18
Für jeden Monat eine Query abzusetzen macht wenig Sinn (hört sich so an als ob du das vorhast)

Machs so:

SELECT *, MONTH(datum) AS eventMonat
FROM
events
WHERE
datum BETWEEN STR_TO_DATE('01.01.2007','%d.%m.%Y) and STR_TO_DATE('31.12.2007','%d.%m.%Y)
ORDER BY
datum

Statt den fixen Daten benutzt du halt variablen..

So, damit hast du alle Events im Gesamtintervall, beim Auslesen machst du dann:

$monat=0;
while($row = mysql_fetch_assoc($result)) {
if ($monat!=$row['eventMonat'] ) echo "Neuer Monat: " . $row['eventMonat'];
echo $row['sonstigesVomEvent'];
$monat=$row['eventMonat'];
}

Die Ausgabe machst du noch schön tabellarisch, schreibst dir noch eine kleine Funktion um die Zahl in den deutschen Monatsnamen umzuwandeln und schon bist Du fertig ;)

fips
04.12.2006, 19:24:01
Hi!

Danke für deinen Tipp.

Was ich nicht ganz verstehe:

Woher weiss PHP wann das nächste Monat in der Zeitspanne beginnt?

Gruß

Philipp

BenniG.
04.12.2006, 19:27:55
Du liest alle Events aus, die dann evtl unterschiedliche Monate haben. In der Schleife wo die Datenbank ausgelesen wird wird dann gecheckt ob zwischen dem letzten und dem aktuellen Datensatz ein "Wechsel" im Monat stattfindet..
if ($monat!=$row['eventMonat'] ) echo "Neuer Monat: " . $row['eventMonat'];