Gruppierung von DB-Ausgabe nach Datum

ropueh

Mitglied
Hallo
es gibt zwar sogar ein Tutorial zum Thema, aber ganz von vorne wollte ich nicht anfangen und mein Wissen ist zu gering um das so einfach auf meinen Unfug anzuwenden... vor allem, weil ich aus zwei Tabellen die Daten lese.

und zwar geht es um einen Event-Kalender, bei dem ich die Ausgabe verändern möchte

PHP:
<?php
include('config.php');
mysql_query("SET lc_time_names = 'de_DE'");

$query = mysql_query("
(SELECT MONTH(datum) AS monat, DATE_FORMAT(datum,'%W, %d.%m.%Y') AS datuma, TIME_FORMAT(datum,'%H:%i') AS starta, datum, id, ort, titel, kategorie, url FROM termine WHERE datum >= now())
UNION
(SELECT MONTH(datum) AS monat, DATE_FORMAT(datum,'%W, %d.%m.%Y') AS datuma, TIME_FORMAT(datum,'%H:%i') AS starta, datum, id, ort, titel, kategorie, url FROM kalender WHERE datum >= now())
ORDER BY datum
ASC");

echo "<table width=\"800\" border=\"0\" cellpadding=\"4\">";
echo "<tr class=\"row_1\">";
echo "<td style=\"width: 150px\"><b>Wann?</b></td><td><b>Was?</b></td><td><b>Beginn?</b></td><td><b>Wo?</b></td><td><b>Stadt</b></td><td><b>Kategorie</b></td></tr>\n"; 

$i = 0;
while($data = mysql_fetch_array($query))
{
$id = $data['id'];
$datuma = $data['datuma'];
$starta = $data['starta'];
$kategorie = $data['kategorie'];
$ort = $data['ort'];
$titel = $data['titel'];
$url = $data['url'];

if (strlen($titel) > 40) {
	$string = "<span style=\"text-transform: uppercase;\">".substr($titel, 0, 40)."</span>...";
	}
else { 
	$string = "<span style=\"text-transform: uppercase;\">".$titel."</span>"; 
	}
                echo "<!--".$titel."-->\n";
                ?><tr class="row_<?PHP echo $i % 2; ?>"><?php
                echo "<td>$datuma</td><td>";
		echo "<a href=\"$website\">$string</a>";
		echo "</td><td>$starta</td><td>";
		echo "<a href=\"$website\">$ort</a>";
echo"</td><td>";

if ($ort == "Tabulos") { echo "NB"; }
elseif ($ort == "Zebra") { echo "NB"; }
elseif ($ort == "AJZ NB") { echo "NB"; }
elseif ($ort == "Klex") { echo "HGW"; }
elseif ($ort == "JAZ") { echo "HRO"; }
elseif ($ort == "Speicher") { echo "PW"; }
elseif ($ort == "Median") { echo "HRO"; }
elseif ($ort == "Tikozigalpa") { echo "HWI"; }
elseif ($ort == "Peter Weiss Haus") { echo "HRO"; }
elseif ($ort == "Komplex") { echo "SN"; }
elseif ($ort == "IKuWo") { echo "HGW"; }
else { echo "k.A."; }

echo"</td><td>$kategorie</td></tr>\n";
    $i++;
  }

?>

so werden die Daten abgerufen und ausgegeben.
Ich hätte das Ganze aber nun gern nach Jahr und vor allem Monat gruppiert.
Kann jemand konkrete Hinweise geben, wie ich das möglichst einfach lösen kann, ohne alles von vorne schreiben zu müssen?

Vielen Dank
 
Hi,

ich verstehe dein Problem nicht ganz. Du verwendest ja

SQL:
ORDER BY datum
Die Datensätze sollten also nach Datum sortiert ausgegeben werden. Wenn du ein GROUP BY einbauen würdest, würdest du für jeden Tag nur noch einen Datensatz sehen.

Ich hätte schon eine grobe Ahnung, was du vorhast, aber bitte bring doch erst einmal ein Beispiel, wie das ganze aussehen soll.
 
Hallo,

genau, ja... GROUP BY ergibt nur ein Ergebnis pro Datum

ich habe jetzt (grob vereinfacht):

1.1. 12 uhr feier
1.1. 14 uhr disko
3.1. 22 uhr disko
15.1. 23 uhr konzert
3.2. 22 uhr disko
5.2. 19 uhr feier

möchte aber

Januar
1.1. 12 uhr feier
-----15 uhr disko
3.1. 22 uhr disko
15.1. 23 uhr konzert

Februar
3.2. 22 uhr disko
5.2. 19 uhr feier

so ist es klarer, oder?
 
hm, so schön lakonisch.
Wie würde das denn dann ungefähr aussehen? Also ich möchte keinen fertigen Code, aber einen Hinweis, weil ich nicht so richtig durchsehe, wo was hin muss, oder wonach ich suchen könnte...
 
Zurück