Seite 1 von 1

Aus zwei Schleifen Daten vergleichen

Verfasst: 30.10.2011 16:06
von hmmder3
Hallo

ich habe mal wieder ein kleines Problem und komme nicht weiter.
Ich weiß auch garnicht, ob das so möglich ist, wie ich mir das vorgestellt habe.

Es geht um folgendes:

Ich habe die Calendar Mod (Darum geht es hier nicht direct) und habe mir nun einen kleinen "Übersichts" Kalender auf meiner Mainseite erstellt (orientiert habe ich mich an dem Portal Mod mini_cal).

Nun möchte ich eine SQL-Abfrage machen, die mir das Datum der, in der Calendar Mod eingestellten Termine ausgibt.
Dies wird ja normalerweise so gemacht:

Code: Alles auswählen

$sql=
	'SELECT
		event_start_time,
		event_end_time,
		event_subject
	FROM
		'.$table_prefix.'calendar_events
	';
	
	$result = $db->sql_query($sql);

	while ($row = $db->sql_fetchrow($result))
	{
		//Code zum bearbeiten der Abfrage
	}
Nund habe ich den Code des mini_cal. Dieser wird über eine "for" Schleife erstellt.

Meine Frage ist nun, kann ich die Ergebnisse der beiden Schleifen irgendwie vergleichen, in etwa so:

Code: Alles auswählen

Schleife 1: Datum1- 1.10.2011
                Datum2- 5.10.2011
                usw.

Schleife 2: KalenderTag erstellen 1.10.2011

Wenn Datum Schleife 1 = KalenderTag erstellen Schleife 2 
dann Ergebnis = Link zum Kalender

Schleife 2: KalenderTag erstellen 2.10.2011

Wenn Datum Schleife 1 = KalenderTag erstellen Schleife 2
dann Ergebnis = Link zum Kalender

usw.
Hoffe das man dies so einigermaßen verstehen kann

Mit freundlichen Grüßen

hmm der 3.

Re: Aus zwei Schleifen Daten vergleichen

Verfasst: 30.10.2011 16:12
von Pyramide
Wenn die Datumswerte als Unix-Timestamp vorliegen, kannst du diese einfach mit =, < und > vergleichen.

Re: Aus zwei Schleifen Daten vergleichen

Verfasst: 30.10.2011 16:42
von hmmder3
Ok

Ich habe jetzt das Datum in UNIXTIME

Code: Alles auswählen

$sql=
	'SELECT
		FROM_UNIXTIME(sort_timestamp)
	FROM
		'.$table_prefix.'calendar_events
	';
	
	$result = $db->sql_query($sql);

	while ($row = $db->sql_fetchrow($result))
	{
		
		$datum = $row['FROM_UNIXTIME(sort_timestamp)'];

		//Datum splitten
		list ($jahr, $monat, $tag, $stunden, $minuten, $sekunden) = split('[-: ]', $datum);
    }
Jetzt ist aber immernoch die Frage, wie ich daten aus 2 Unterschiedlichen Schleifen mit einander vergleichen kann. Da hängt es einfach bei mir.

EDIT:

Habs nun geschaft. trozdem danke für die mühen!

Re: Aus zwei Schleifen Daten vergleichen

Verfasst: 30.10.2011 18:45
von Pyramide
hmmder3 hat geschrieben:Ich habe jetzt das Datum in UNIXTIME
Nein, mit from_unixtime konvertierst du von einem Unix-Timestamp zu einem (SQL-)Datumswert, hast also hinterher keinen Unix-Timestamp mehr.
hmmder3 hat geschrieben:Jetzt ist aber immernoch die Frage, wie ich daten aus 2 Unterschiedlichen Schleifen mit einander vergleichen kann. Da hängt es einfach bei mir.
Naja du vergleichst die Werte halt einfach. Wie die Grundstruktur aussehen muss, hast du ja im ersten Beitrag schon als Pseudocode geschrieben. In der Annahme, dass die Spalten event_start_time und event_end_time Beginn und Ende des Termins enthalten, kannst du dann mit if($timestamp_des_aktuellen_kalendertages >= $event_start_time && $timestamp_des_aktuellen_kalendertages <= $event_end_time) feststellen, ob der Termin am entsprechenden Kalendertag ist.

Ansonsten vielleicht mal den vollständigen Code posten und beschreiben, was genau noch nicht funktioniert (-> KB:programmierfragen). Dein bisheriger Code enthielt ja bisher immer nur eine Schleife.

Re: Aus zwei Schleifen Daten vergleichen

Verfasst: 31.10.2011 16:54
von hmmder3
Vielen Dank für die Antwort.

Es läuft mitlerweile schon. Das mit dem Unixtime habe ich falsch verstanden aber richtig ausgeführt. Dadurch habe ich ein normales Datumsformat erstellt das ich wieder splitten konnte:

Code: Alles auswählen

		$datum = $row['FROM_UNIXTIME(sort_timestamp)'];

		//Datum splitten
		list ($jahr, $monat, $tag, $stunden, $minuten, $sekunden) = split('[-: ]', $datum);
		$datum = ($tag.".".$monat.".".$jahr." - ".$stunden.":".$minuten);
War also doch richtig :P

Das Thema kann also als abgeschlossen geschaltet werden.

Zu meiner Lösung für alle Suchende:

Ich habe einfach die "while" Schleife, um die SQL-Abfrage zu verarbeiten, in die "for" Schleife meines Kalenders gepackt und mit Abfragen versehen. So erhalte ich nun mein Ziel, das mir die Tage ausgegeben werden, an denen in der Calendar MOD Termine eingetragen sind.

MfG

hmm der 3.