Nach Datum und Uhrzeit sortieren

Tuts4you

Erfahrenes Mitglied
Hallo Leute!
Nach Langem brauch ich wieder mal eure Hilfe...

Und zwar, ich hab ein simples Gästebuch programmiert (PHP & MySQL).

Bei einem Eintrag lasse ich das Datum sowie die Uhrzeit miteintragen:
$timestamp = time();
$Date = date("d.m.Y",$timestamp);
$Time = date("H:i",$timestamp);


...bei der Ausgabe will ich dann, dass die Einträge nach Datum und Uhrzeit aufsteigend (?) sortiert werden:
Select Name, Email, Date, Time, Comment FROM $table ORDER by Date DESC, Time DESC

So, das ganze funktioniert auch schön wenn ich im selben Monat bin, jedoch jetzt (September) wird ein aktueller Eintrag an letzter Stelle angezeigt...

Das ganze sieht dann ungefähr so aus:
Max Mustermann schrieb am 29.08.2006 um 16.06
Testmessage


Max Mustermann schrieb am 28.08.2006 um 20.10
Testmessage


Max Mustermann schrieb am 01.09.2006 um 11.00
Testmessage




Hoffe ihr versteht meine Problemstellung...

Ich danke schon mal im vorraus!

lg Michael :rolleyes:
 
Hallo!

warum gibst Du nicht nach $timestamp sortiert aus, wenn Du sie schon in der Datenbank hast? Damit umschiffst Du nämlich genau die Problematik, die du oben beschreibst.

Da du mit der date()-Funktion aus jeder Timestamp, also egal ob aus der aktuellen mittels time() oder einer in der DB gespeicherten, ein gültiges Datum bzw eine gültige Uhrzeit erzeugen kannst, kannst Du dir die Einträge Date und Time sparen.
 
mhm :)
Kein schlechter Vorschlag!
Aber das würde ja heissen, dass ich in meiner DB kein Feld mit Date und Time mehr habe sondern nur mehr eins mit Timestamp oder?

Wie muss das ganze dann ausschauen?
$timestamp = date ();
$timestamp = time ();
wird nicht funktionieren oder? Weil die Variabeln ja dann überschrieben werden...


lg Michael
 
Junge,
du stellst dich an.

du hast dein Gaestebuch:

USER/Kommentar/Adresse/etc/timestamp

dann ordnest du alles bei der Ausgabe nach timestamp

dies ist nur mal ein Beispiel


PHP:
$abfrage = mysql_query("SELECT * FROM gaestebuch ORDER BY 'timestamp' ASC );
$zeile='0';
while($aufhoeren!='x')
{
$kommentar = mysql_result($abfrage, $zeile, "kommentar");
$user = mysql_result($abfrage, $zeile, "user");
$timestampdesposts = mysql_result($abfrage, $zeile, "timestampr");

   if($kommentar!="")
   {
   $anzeigevomdatum=date("d.m.Y",$timestampdesposts);  #siehe www.php.net  unter:date() da kannst du dann aussuchen, wie du das jeweilige Datum ausgaben moechtest, ob als Wochentag, ausgeschrieben, Datum, Uhrzeit, wurscht...
                                 #dadurch benoetigst du nicht extra das speichern des Monats, etc... ist ja alles im Timestamp enthalten

   echo "Musterpost vom Gaestebuch $user $kommentar $anzeigevomdatum";
   $zeile++; #hier erhoeht sich die Zahl um eins fuer den nachsten Durchlauf
   }
   else
   {
   $aufhoeren='x';
   }
}
 
Zuletzt bearbeitet:
Am besten finde, hat man eine Spalte datum DATETIME dann brauchste nur beim Eintragen: NOW() im SQL-Statement.
PHP:
$sql = "INSERT INTO ds_gbook (name,entry,datum,hp,icq,mail) VALUES ('$feld12','$entry',NOW(),'$feld34','$feld56','$feld78');";

Beim Auslesen dann:
PHP:
SELECT id,name,entry,DATE_FORMAT(datum,'%d.%m.%y | %H:%i') AS dato,hp,icq,mail
FROM ds_gbook ORDER BY id DESC

Eigentlich sortiert man ein GB ja nach der id bzw der letzte Eintrag nach oben ;-]
 
warum einfach wenns komplieziert auch geht :)
Order by ID DESC...warum bin ich selbst nicht darauf gekommen!
Danke, Online Skater...

Michael
 
Zurück