Datenbankausgabe spezial *g*

medico

Erfahrenes Mitglied
Hallo,
ich habe eine Datenbank mit Termine für Versanstaltungen, die Termine sind in der Datenbank als Unixformat (Timestamp).
Nun möchte ich gerne diese Veranstaltungen wie folgt ausgeben.
Es sollen insgesamt die 5 aktuellsten Termine ausgegeben werden, der erste von diesen aktuellen Terminen soll ausführlicher ausgegeben werden.

Beispiel:

31.03.06 Veranstaltung A Musterstadt
Lange Beschreibung

02.04.06 Veranstaltung B Musterhausen
05.04.06 Veranstaltung C Musterstadt
usw.....

Wie bekomme ich sowas hin?
Ok man kann das mit zwei Abfragen machen, das wäre ja kein Problem.
Nur leider weiß ich nicht wie die Abfrage für den aktuellsten Termin und die Abfrage für die 4 nachfolgenden Termine aussehen müssten.

Könnt Ihr mir da helfen?
Das wäre echt super.

Gruß Medico
 
OK, ich gehe mal von MySQL als Datenbank aus.
Der Unix-Timestamp ist eine Integerzahl (Sekunden seit Jahresbeginn 1970), also bedeutet es: je größer der Timestamp, desto aktueller.

Weiterhin kannst du die Anzahl bzw. Position der Ergebnisdatensätze mit LIMIT steuern.

Detaillierter erster Datensatz:
SQL:
SELECT t.a,t.b,t.c FROM tabelle t WHERE t.timestamp = MAX(t.timestamp) LIMIT 1;
Alternativ:
SQL:
SELECT t.a,t.b,t.c FROM tabelle t ORDER BY t.timestamp DESC LIMIT 1;

Weitere 4 Datensätze:
SQL:
SELECT t.a,t.b,t.c FROM tabelle t ORDER BY t.timestamp DESC LIMIT 1,4;
 
Danke für Deine schnelle Antwort. Aber ich habe meine Frage vielleicht ein wenig falsch forumliert. Mit den aktuellsten Eintrag meinte ich jetzt den der als nächstet kommt.
Das heißt wenn ich jetzt folgende Termine haben:

08.03.2006
15.03.2006
30.03.2006
31.03.2006
05.04.2006
18.04.2006
21.04.2006
02.05.2006

Dann soll der 30.03.2006 der ausführliche sein und die 4 nächsten wären dann:
31.03.2006
05.04.2006
18.04.2006
21.04.2006

Die alten (Vergangeheit) sollen gar nicht angeziegt werden.
 
Achso, das mit den Terminen in der Zukunft hatte ich glatt überlesen.

Aber die Umsetzung ist nicht weiter schwer, denn dazu müssen wir halt die Sortierreihenfolge umkehren und mit einem angegebenen Timestamp arbeiten (Der Zeitpunkt, von dem wir ausgehen):

Für die nächsten 4 Datensätze:
SQL:
SELECT t.a,t.b,t.c FROM tabelle t WHERE t.timestamp>'StartTimestamp'  ORDER BY t.timestamp ASC LIMIT 1,4;
 
Die Lösung die Du oben gepostet hast für den Ausführlichen Termin, haut nicht hin, denn da wird mir an Hand meiner Beispieldaten der 02.05.2006 angezeigt und nicht der 30.03.2006.
 
Hallo,

ich würde das ein wenig mit php lösen.
Das wäre mein Vorschlag:

PHP:
$c = 0;
$sql = "SELECT * FROM table WHERE timestamp > " . time() . " LIMIT 5";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
echo $row['headline'] . "<br>" . $row['short_descrption'];
if($c == 0) echo "<br>" . $row['description'];
$c++;
}

Ich hoffe es funktioniert.

tobee
 
Sorry, der obere Vorschlag war ja auch für den Fall, dass kein Timestamp vorgegeben ist sondern der Eintrag mit dem höchsten Timestamp als Ausgangspunkt dient...

Jetzt bleibt ein ganz einfaches SELECT übrig, wenn der Starttimestamp angegeben wird:
SQL:
SELECT t.a,t.b,t.c FROM tabelle t WHERE t.timestamp='StartTimestamp'  LIMIT 1;

So schwer war das doch auch nicht, dass man da nicht selbst drauf kommen könnte:suchen:
 
Also das mit dem Ausführlichen habe ich glaube ich hinbekommen

PHP:
$result = mysql_query("SELECT * FROM vk WHERE termin  > " . time() . " LIMIT 1;",$db);
So gibt er mir nur den nächst folgenden Termin aus. Ist ja auch so gewollt. Kann man es auch so machen, das er auch am Tag der Veranstaltung den Termin noch anzeigt? Weil wenn der Termin z.B. am 30.03.2006 ist und wir haben den 30.03.2006 dann zeigt er mir schon den nächsten an, das soll aber nicht so sein.
 
Zurück