MySQL-Abfrage

dodo1912

Grünschnabel
Ich bin dabei die Events auf meiner Webseite (http://www.dodo1912.de) Datenbankbasiert zu machen....

Die Tabelle steht, das CMS dazu läuft nur die Ausgabe macht noch etwas schwierigkeiten...Als Anfang habe ich es jetzt mal so gemacht:

PHP:
 $res = mysql_db_query("dbhost_067-01", "select * from events ORDER BY datum ASC");

Es sollte aber so sein, dass die letztenbeiden und die nächsten drei Events in einer Tabelle angezeigt werden. In der Tabelle ist das Datum des Events als Timestamp gespeichert...

Vielleicht geht es irgendwie so:

PHP:
...FROM events WHERE Datum < time() LIMIT 2 AND Datum > time() LIMIT 3
 
Das geht zwar bestimmt auch irgendwie in einem Querry aber du könntest es mit 2 machen da läuft es dann bestimmt.
1.Query:
SELECT * FROM events WHERE Datum < '" . time() . "' [LIMIT 2

2.Query
SELECT * FROM events WHERE Datum > '" . time() . "' LIMIT 3
 
das mit den 2 verstehe ich nicht - bzw. weiss ich nicht umzusetzen und was mir der letzte Post sagen soll weiß ich auch nicht...

Hat jemand noch eine Idee?
 
Ich meine damit das du die Datenbankabfrage auf 2 Datenbankabfragen aufteilen sollst eben
1.
SELECT * FROM events WHERE Datum < '" . time() . "' LIMIT 2
2.
SELECT * FROM events WHERE Datum > '" . time() . "' LIMIT 3
und dadurch auch 2 ausgaben erzeugst da du dir erst die Daten für die letzten 2 Einträge aus der Datenbank holst dir diese ausgibst und dann die Daten für die nächsten 3 Einträge aus der Datenbank holst und dann diese ausgibst.

Gumbo wollte dir nur sagen das man für diese DB abfrage nicht auf die time () Funktion von PHP zurückgreifen muss sonderen die mySQL eigene Funktion "UNIX_TIMESTAMP ()" nutzen kann.
http://dev.mysql.com/doc/refman/4.0/de/date-and-time-functions.html#id2653352
 
irgendwie scheint das Problem grösser als ich dachte. Mit meinem gefährlichen Halbwissen sah ich die Sache schon als gelöst an, jedoch ist die Lösung wohl noch fern.

Wenn jdn noch eine Idee hat oder einen Code-Schnipsel dann immer her damit. Das ist so ziemlich die letzte Hürde bevor das Skript fertig ist...Ich kann heute abend ja mal posten was ich bisher habe...wobei das ja nicht viel ändert...na mal sehn.


Grüsse

der fast verzweifelte Dodo ;)
 
mit beiden Vorschlägen sollte man schnell zu einer Lösung kommen. Die von Gumbo is natürlich eleganter :) da du dann nur ein Query hast, aber die mit den 2 Querys dürfte auch langen
 
angenommen ich nehme die von Gumbo...Im Moment habe ich in der Tabelle eine Zeile die "datum" heisst...Dort steht als INT der Timstamp drin. Der kam über ein Input-Formular da rein (Auswahl von Tag / Mon / Jahr ---> umwandlung in Timestamp)

Was nu? Wie lautet denn dann die SQL - Anweisung?

nochmal in Worten...

Nimm aus Tabelle events die Zeilen, wo "datum" < als "aktuellesdatum" ist (2 Stück) UND wo "datum > "aktuellesdatum" ist (3 Stück)...
 
Ich habe bisher noch nicht mit dem Datumsfunktiónen von MySQL gearbeitet ... müsste mich da erstmal reinarbeiten. Nehm doch einfach die beiden Abfragen von ezias
 
Das sind die Events:

http://www.dodo1912.de/sportmtbevents.php

Das ist aber die Ausgabe der letzten 3:


3 Datensätze gefunden
15, 1149890400, 10.06.2006, Finale EMC, Ja, http://www.eifel-mosel-cup.de, , cczell2006
6, 1143068400, 23.03.2006, 1. Lauf EMC, Ja, http://www.eifel-mosel-cup.de, , ccbekond2006
12, 1148076000, 20.05.2006, 2. Schinderhannes, Ja, http://www.schinderhannes-mtb.de, , emmelshausen2006

wieso geht das so durcheinander?

wie hänge ich an die Query noch die Sortierung an (das hat bei mir immer nen Fehler verusacht...)

hier die Query:
$sql = "SELECT * FROM events WHERE `datum` < '" . time() . "' LIMIT 3";
 
Zurück