[MySQL] gästebuch einträge werden nicht sortiert wie ich dies möchte

asseskiller

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
447
Ich möchte die Gästebucheinträge so sortiert haben, das die neuesten an oberster stelle stehen. Dies habe ich so geregelt:

PHP:
<?php
//Auslesen der Einträge
$tabellenname="gaestebuch";
$sql="SELECT absender, betreff, message, datum, zeit FROM $tabellenname WHERE pruef=1 ORDER BY datum DESC ";
$link = mysql_connect("localhost", "xxxx", "xyz");
mysql_select_db("phpmyadmin", $link);
$result = mysql_query($sql, $link);
for($i=0;$i<mysql_num_rows($result);$i++)
{
$ergebnis[$i]=mysql_fetch_array($result);
}
?>

.... 
nen paar andere sachen wie formulare und Variablendeklarationen
....

<?php
//Ausgeben der Einträge
for($i=0;$i<count($ergebnis);$i++)
{
echo  "<table width=\"400\" border=\"0\">
  <tr>
    <td width=\"141\" height=\"24\" align=\"left\" valign=\"top\" id=\"zellenhead\"><b>".$ergebnis[$i]['absender']."</b></td>
    <td width=\"243\" align=\"left\" valign=\"top\" id=\"zellenhead\"><strong>".$ergebnis[$i]['betreff']."</strong></td>
  </tr>
  <tr>
    <td align=\"left\" id=\"zellenfood\">".$ergebnis[$i]['datum']."<br><br>".$ergebnis[$i]['zeit']."</td>
    <td align=\"left\" valign=\"top\" id=\"zellenfood\">".$ergebnis[$i]['message']."</td>
  </tr>
</table>";
}
?>

der Quelltext is an sich okay und funktioniert einwandfrei (da fehlen klammern und sowas wegen der auslassung)
er sortiert die Einträge lediglich falschherum... aber eigentlich sortiert die funktion DESC so wie ich es möchte, zumindest sollte sie das... ich habs auch schon mit ASC versucht das selbe problem.
 
Du musst nicht nur datum sondern auch Zeit sortieren. Da du wie ich vermute einfach nur das datum sortierst und alle deine versuche (tests) am gleichen tag machst kommt einfach alles neues nach unten auch wenn der aktuellste (einzige) tag immer oben ist.

Einfacher wäre es datum und zeit einfach nur zu speichern, dafür aber noch einen "message counter" zu nehmen der bei jeden neuen eintrag eins höher/weiter macht/zählt. und nach diesem zu sortieren.

Also nicht nur datum sondern auch zeit sortieren !
 
Ich benutze die time() funktion zum ermitteln der Zeit und Datum.
Die Funktion lieftert die Sekunden nach dem 1.1.1970 (UNIX Timestamp) und kann mittels der strftime(string format, timestamp) Funktion bearbeitet werden, so dass du am Schluss ein Datum erhältst, wie du es möchtest.
 
Oder du machst das Mysql Feld gleich vom Typ date und schreibst bei einem neuen Eintrag einfach NOW() ins Feld. Dann musst du noch nicht mal umformatieren und hast gleich eine international gültige Datumsangabe (http://www.w3.org/QA/Tips/iso-date !).

Allerdings würde ich zum Sortieren der Beiträge auch ein eigenes Feld post_id verwenden, welches auto_increment ist. Dann hast du außerdem für jeden Beitrag eine eindeutige Identifiaktionsnummer und kannst dein Gästebuch später einfacher um neue Funktionen erweitern, wie löschen von Beiträgen oder so...
 
Das Problem ist ich habe jetzt schon einträge drinne und wenn ich jetzt die tabelleerweitere sind die Einträge davon, weil ich sie löschen muss, da sonst die einträge nicht mehr in die Tabelle kommen.... wie kann ich das jetzt noch regeln?

...
oh ne sorry hab mich geirrt ... danke ich hab mich für die ID entschieden
 
Zuletzt bearbeitet:
Wenn ich mich nicht irre, müsste das ganze so funktionieren:
PHP:
$sql="SELECT absender, betreff, message, datum, zeit FROM $tabellenname WHERE pruef=1 ORDER BY datum DESC, zeit DESC";

Also demzufolge einfach hinten noch das "zeit DESC" mit ranhängen.
 
Zurück
Oben