Nach Datum sortiert ausgeben

der_geodaet

Grünschnabel
Hi!

Zunächst einmal hört sich mein Problem trivial an. Ist es wahrscheinlich auch, aber ich komme aktuell nicht weiter. Ich möchte Einträge aus einer Datenbank auslesen (das ist kein Problem) und sie dann wie im folgenden Bild nach Datum sortiert ausgeben:screenshot.png

Wäre cool, wenn mir jemand helfen könnte bei dem Problem :)
Danke schonmal.
Beste Grüße,
der_geodaet
 
SQL:
SELECT ....
FROM ....
ORDER BY my_date_field
 
Zuletzt bearbeitet von einem Moderator:
Hi Yaslaw!
Danke für deine Antwort. Das, was du geschrieben hast, ist mir sonnenklar. Wo ich mein Problem gerade habe ist allerdings mehr in der Ausgabe:

Wie kann ich die Datensätze, denen allen ein Datum zugeordnet ist, unter dem Datum ausgeben.
Bsp:
Am 31.07.2012 habe ich drei Datensätze, am 01.08.2012 ist nur ein Datensatz vorhanden. Jetzt möchte ich das so ausgeben:


31.07.2012
-----------------------------------------------------
Event 1

Event 2

Event 3



01.08.2012
-----------------------------------------------------
Event 1

Weißt du, was ich meine?
Beste Grüße,
der_geodaet
 
Du gehst in einer Schleife alle deine Datensätze durch. Dabei prüfst du ob bereits ein Datum ausgegeben wurde und ob es mit dem Datum des aktuellen Datensatz übereinstimmt.

JA: Datum wurde bereits als Überschrift ausgegeben. Es erfolgt deshalb keine neue Ausgabe.

NEIN: Neues Datum wird als Überschrift ausgegeben.


PHP:
<?php
$datum = array(
			"12.05.2012", "12.05.2012", "12.05.2012", "25.05.2012", "25.05.2012", "25.05.2012", "25.05.2012",
			"30.05.2012", "30.05.2012", "02.06.2012", "02.06.2012", "02.06.2012", "05.06.2012"
			);

$aktuell = "";
$b = 1;
for ($a = 0; $a < count($datum); $a++){
	if ($aktuell != $datum[$a]){
		echo "<h1>". $datum[$a] ."</h1><br />";
		$aktuell = $datum[$a];
		$b = 1;
	}
	echo "Durchlauf " .$b ."<br />";
	$b++;
}

?>
 
Zuletzt bearbeitet:
Viel zu kompliziert. Man kann gleich bei Auslesen aus der DB alles in ein Mehrstuffigen Array schmeissen und nachher abarbeiten
PHP:
$sql = <<<SQL
SELECT
	-- Datum extrahieren um sicher keine Stunden, Minuten und Sekunden drin sind
	DATE(my_date) AS group_date,
	my_date,
	title
FROM
	my_table
ORDER BY
	my_date
SQL;

$result = mysql_query($sql);
// Array für die Datumsgruppen initialisieren
$groups = array();

while($row = mysql_fetch_assoc($result)){
	// Die ganze $row unter dem Key 'group_date' an $groups anfügen
	// Array(
	//		'2012-06-12' => Array(
	//			0 => Array(
	//				'group_date' => '2012-06-12', 
	//				'my_date' => '2012-06-12 10:35:15',
	//				'title' => 'Event 1'
	//			)
	//			1 => Array(
	//				'group_date' => '2012-06-12', 
	//				'my_date' => '2012-06-12 12:40:15',
	//				'title' => 'Event 2'
	//			)
	//		)
	//	)
	$groups[$row['group_date']][] = $row;
}

// Alle Gruppen Ausgeben
foreach($groups as $date => $events){
	echo "<h1>{$date}</h1>";
	// Die Events pro Gruppe ausgeben
	foreach($events as $event){
		echo "<p>{$event['title']}</p>";
	}
}
 
Immernoch kompliziert ;)
Wieso nicht einfach eine Variabel initaliseren und dann sowas:
PHP:
while($row = mysql_fetch_assoc($result)){
  if($date != $row['date']){
    //Titel ausgeben
  }
  //Restlicher Datensatz ohne Titel ausgeben
  $date = $row['date'];
}

Find ich am einfachsten, ausser ich hab einen Überlegungsfehler gemacht...
Gruss DexXxtrin.
 
Und das wäre dann vom Prinzip genau die Lösung die ich oben auch schon vorgeschlagen habe.

Oder täusche ich mich da!?
 
Stimmt ja. Hab nur kurz den Code angeschaut und halt gesehen dass du es mit Array machst.
Aber nehme an das ist einfach ein Beispiel des Funktionsprinzip.
Die Idee ist wohl die Selbe.
 
Ich bedanke mich schonmal für die Tipps. Leider komme ich wohl erst heute Abend dazu, sie auszuprobieren. Aber dann bekommt ihr sofort Bescheid. Auf jeden Fall sehen sie plausibel aus.
Beste Grüße,
der_geodaet
 
Zurück