# MYSQL KAlender nach Datum gruppieren, nach Uhrzeit sortieren



## kamstarr (19. Dezember 2009)

Hallo Leute,

ich arbeite gerade an einem Veranstaltungskalender. Klappt auch so weit ganz gut.
Habe ne Suche wo man eine Stadt eingeben kann und eine Abfrage die wie folgt aussieht:


```
$daten = mysql_query('SET lc_time_names = "de_DE" ');
			$daten = mysql_query(' SELECT veranstaltung, time_format(uhrzeit, "%H:%m ") as uhrzeit, date_format(datum, "%W, %e. %M %Y") as datum,  veranstaltungsort ... FROM `xy` WHERE  `stadt`=\''.$sucheeingabe.'\' OR `stadt`=\''.$sucheauswahl.'\'  ORDER BY datum ASC, uhrzeit ASC ' , $conID) ; 
			if(mysql_num_rows($daten) > 0) {
			while($row=mysql_fetch_array($daten))
			{
			echo "<table style='text-align: center; width: 250px; height: 15px; background-color: rgb(234, 234, 234);'>            <tbody><tr><td><font class=\"font2\">".$row['datum']."</font></td></tr></tbody></table>";
    		echo("<br><br>");
            echo "<font class=\"font4\">".$row['uhrzeit']."</font>";
			echo("&nbsp;");
			echo "<font class=\"font4\">Uhr</font>";
    		echo("<br><br>");
			...
```

So der zeigt mir alle Ergebnisse an. Funktioniert.

Problem ist, dass ich bei jedem Termin, durch das ECHO eine Datumsangabe bekomme. Ich möchte aber, dass alle Termine vom gleichen Tag unter einer Datumsangabe stehen.

Habe schon mit DISTINCT und GROUP BY rumgespielt aber kriege es nicht hin.
ECHO müsste dann wahrscheinlich weg oder Brett vor dem Kopf


----------



## kamstarr (8. Januar 2010)

Hat echt keiner eine IDEE ?
So schwer kann das doch nicht sein


----------



## CPoly (8. Januar 2010)

Nimm eine PHP Variable, z.B. $curDate und merke dir, bei welchem Datum du gerade bist. So lange sich das Datum deines aktuellen Datensatz nicht von $curCate unterscheiden, gibst du deine Termine aus, sollte es sich unterscheiden, steckst du das neue Datum in die Variable und gibst z.B. eine Überschrift mit dem neuen Datum aus.


```
while($row=mysql_fetch_array($daten))
{
    if($curDate != $row['datum'])
    {
        $curDate = $row['datum'];
        echo $curDate;
    }
    echo "...Termine...";
}
```


----------



## kamstarr (9. Januar 2010)

Danke für die Antwort. Das wird aber leider nicht klappen.

Das Datum ist unterschiedlich. Also nochmal:

Event-Kalender z.B.

19.03.2010 Party Köln
19.03.2010 Fete Düsseldorf
20.03.2010 Feier Berlin

Meine Wunsch-Ausgabe:

19.03.2010 Party Köln
                      Fete Düsseldorf
20.03.2010 Feier Berlin

Also, wenn das gleiche Datum mehrfach vorkommt soll es nur einmal angezeigt werden und der Rest aber schon.

Weitere Ideen?


----------



## DeluXe (9. Januar 2010)

Genau das tut das von CPoly gepostete Snippet doch?


----------



## kamstarr (9. Januar 2010)

Nein, wenn ich mir ein Datum merke dann bringt das ja nichts, es kann ja mehrere Tage geben in dem es mehrere Veranstaltungen gibt!!
Versteht Ihr?

Oder steh ich auf dem Schlauch?


----------



## DeluXe (9. Januar 2010)

kamstarr hat gesagt.:


> Oder steh ich auf dem Schlauch?


Meiner Meinung nach ja. 

Probier das Snippet am besten mal aus, das sollte ja kein großer Aufwand sein.


----------



## TvP (9. Januar 2010)

Speichere dir das letzte Datum in einer $temp-Variable;



```
$temp = null;

Deine Abfrage--

while ($daten = mysql_fetch_assoc()) {
  if ($temp!=$datum) {
    echo $datum;
    $temp = $datum;
  }
  usw--
}
```

Ah man sollte so spät keine Beiträge mehr beantworten..
Wenn du dir dein Datum schon einmal sortiert hast, dann kann ein doppeltest auftreten nicht vorkommen. Dies geschieht in deinem SQL-Befehl.

Denke bitte daran, die übergebenen Parameter zu maskieren.


----------

