For / While Schleifen Anfänger Problem

Stefan_

Grünschnabel
Hallo!

Habe mich jetzt angemeldet in der Hoffnung, dass mir hier vielleicht wer helfen kann.

Folgende Situation:
Es handelt sich um eine Terminliste. Alle benötigten Daten werden hierbei aus einer SQL DB geholt und in tabellarischer Form (Datum | Event Ort | Eventname | usw.) Zeile für Zeile ausgegeben. Funktioniert auch alles einwandfrei.

Problemstellung:
Ich möchte nun eine kleine Modifikation einbauen, sodaß Termine, die das selbe Datum haben (sprich am selben Tag stattfinden), nicht jeweils mit eigenem Datum angeführt werden, sondern dass das Datum nur einmal angeführt wird.
Um es etwas zu veranschaulichen:

Beispiel: 3 Termine sind für den 10.10 vorhanden. Dann soll die Auflistung nicht mehr in der Form.
.

10-10 Termin 1
10-10 Termin 2
10-10 Termin 3
.
.
stehen, sondern in diese Form gebracht werden:
.
.
10-10 Termin 1
_____Termin 2
_____Termin 3
11-10 Weitere Termine
.
.
(die "_" sind jetzt nur als leerraum zu verstehen)

Das müsste irgendwie mit while und/oder for Schleifen und Vergleiche mit dem bereits ausgegeben Datum etc. funktionieren, nur ich bekomme das einfach nicht zum Laufen *seufz*

Hätte vielleicht wer Tipps oder Code Schnippsel parat?

Wäre Euch dankbar!

mfg,
Stefan
 
Zuletzt bearbeitet:
Die Ausgabe ansich wirst du ja schon in einer Schleife machen,nehme ich an.

Du kannst das Datum innerhalb der Schleife jeweils in einer Variablen speichern.
Bei jedem Durchlauf prüfst du, ob das aktuelle Datum identisch mit der Variablen ist.

Wenn ja.... gib nix aus..... wenn nein, gib das Datum aus.
Danach aktualisiere die Variable.
 
Hallo,

Vorerst Danke für die Antwort - Ja, also wie es theoretisch funktionieren sollte, das begreife ich - nur in der Umsetzung liegt dann eben der Hund begraben ;-)
Konkretes Problem: Wie gelingt es mir, $datum_Event_X jeweils mit $datum_Event_Y zu vergleichen und dann auch richtig die Ausgabe zu setzen? Ist sicherlich eine weitere Simple while oder for Schleife - aber ich scheitere genau hier ;-(

Also wo bzw. wie müsste ich dann innerhalb meiner while Schleife den Vergleich einbauen, sodaß Events mit gleichem Datum untereinander (ohne jeweils zusätzlicher Datumsangabe) stehen?

Hier mein extrem gekürzter Code - ist eigentlich schon mehr als PseudoCode zu betrachten. Könnte wer erklären wie ich innerhalb dieser while Schleife die Datumsvergleiche durchführe und somit zu meinem Ziel gelange?

Danke!


PHP:
//SQL Abfrage stark verkürzt
	$sql="SELECT date, enddate, [...] ORDER BY date ASC, e.id ASC;";
	
	$query=mysql_query($sql,$db);

	while($row = mysql_fetch_array($query)) {
		

	// Datum
		echo '<tr>'.$cr;
		echo '<td class="termine" height="60">'.weekday_short($row[0]).strftime(",&nbsp;%d.%m",gettimestamp($row[0]));
		if(gettimestamp($row[1])>gettimestamp($row[0]))
				echo '-<br />'.weekday_short($row[1]).strftime(",&nbsp;%d.%m",gettimestamp($row[1]));
		echo '</td>';
			
	// Location
		echo '<td>'...$Content..'</td>';

	// Event
		echo '<td>'...$Content..'</td>';

	// Beschreibung
		echo '<td>'...$Content..'</td>';
		echo '</tr>';

	}
 
Morgen,

versuchs mal so ....
PHP:
//SQL Abfrage stark verkürzt
$sql="SELECT date, enddate, [...] ORDER BY date ASC, e.id ASC;";

$query=mysql_query($sql,$db);

$pruef_var = ""; // Vergabe der Prüfvariable

while($row = mysql_fetch_array($query)) {

// Datum
echo '<tr>'.$cr;
echo '<td class="termine" height="60">';
	if($pruef_var != $row[0]) { // Vergleich Prüfvar <-> Datum
		echo "Hier kommt das Datum";
	} else {
		echo "&nbsp;";
	}
echo '</td>';

/*
...
...
Weitere Ausgabe
...
...
*/

// Aktuelles Datum in die Variable setzen
$pruef_var = $row[0];
}
Hoffe ich konnte helfen.

Grüße Sven
 
hi Sven!

Ach mein Gott - Danke dir vielmals, hat einwandfrei funktioniert! ;-)

Könnte mich nur steinigen, weil ich diese einfache Abfrage einfach nicht zusammenbekommen habe! ;)


liebe Grüße,

Stefan
 
Zurück