DB-Abfrage chronologisch ausgeben

leuktra

Mitglied
Hallo!

ich habe folgende Abfrage (Kurzform):

PHP:
$result = @mysql_query("SELECT rub.id, rub.rubriken, info.id, info.schluessel, info.ueberschrift, info.dateiname, info.eintrag, DATE_FORMAT(eintrag, '%d.%m.%y') AS form_eintrag, info.geaendert, DATE_FORMAT(geaendert, '%d.%m.%y') AS form_geaendert FROM info INNER JOIN rubriken ON (rub.id = info.schluessel) WHERE info.schluessel = ".(integer)$_GET['id']." ORDER BY info.eintrag, info.geaendert DESC") OR DIE (mysql_error());
while ($row = mysql_fetch_array ($result))
{
echo ''.htmlentities($row['ueberschrift']).' ('; 

if($row['form_eintrag'] > $row['form_geaendert'])
{
echo ''.$row['form_eintrag'].'';
}
else 
{
echo ''.$row['form_geaendert'].'';
}
echo ')';


Nun möchte ich erreichen, daß die Einträge - abhängig vom Datum des Eintrags oder
vom Datum der letzten Änderung chronologisch absteigend ausgegeben werden.

Beispiel: Ist das Datum des letzten Eintrags (DB-Felder "eintrag") vom 26.01.07
und wird nun eine älterer Eintrag (DB-Felder "geaendert") heute 27.01.07 geändert,
dann soll der geänderte Eintrag wieder ganz oben erscheinen.

Der Typ der DB-Felder "eintrag" und "geaendert" ist datetime.

Ich weiß auch nicht, ob der Lösungsansatz mit der if-Abfrage optimal ist, vielleicht
gibt es ja einen eleganteren Weg?
 
wie wärs wenn du bei jedem eintrag und bei jedem ändern dein feld form_geändert auf nen neuen aktuellen timestamp/datetime setzt und dann bei diesem SELECT-Befehl enfach immer nach form_geändert entsprechend sortierst... Dann kannst du dir die if-schleifen-sparen, weil du nicht 2 Felder (form_geändert und form_erstellt) sondern nur eines beachten musst.
 
Hi Bailor,

danke für Deinen Vorschlag. Darüber habe ich auch schon nachgedacht! Ich wollte aber mal schauen, ob es eine andere Lösung gibt bzw. wie die dann aussieht.
 
Zurück