Torsten: Sortieren in MySQL & PHP

Moin,
wie kann ich das ganze jetzt andersherum Sortieren,
dass der neuste Eintrag zuerst gezeigt wird und nicht der älteste ?

<html>
<body>
<?php
  $db = mysql_connect();

$res = mysql_db_query("firma",
          "select * from personen");
  $num = mysql_num_rows($res);
  echo "$num Datensätze gefunden<br>";

for ($i=0; $i<$num; $i++)
  {
      $nn = mysql_result($res, $i, "name");
      $vn = mysql_result($res, $i, "vorname");
      $pn = mysql_result($res, $i, "personalnummer");
      $ge = mysql_result($res, $i, "gehalt");
      $gt = mysql_result($res, $i, "geburtstag");
      echo "$nn, $vn, $pn, $ge, $gt <br>";
  }

mysql_close($db);
?>
</body>
</html>

Hab es schon mal mit einer anderen for Schleife getestet ging aber auch nicht, da kam dann gar kein Datensatz mehr raus ;) :

$num = mysql_num_rows($res);
$max = $num + "1";
for ($i=$max; $i<$num; $i--) {
...
}

weiß auch nicht warum das nicht ging...

Dank euch jetzt schon mal für eure Hilfe!
Torsten

  1. Hi,

    Probier's doch mal mit dem MySQL-Befehl "SELECT * FROM personen ORDER BY spaltenname". Wenn du noch ASC oder DESC dahinterhängst, sortiert dir MySQL alles entweder auf- oder absteigend. Dann brauchst du nachher keine Schleife laufen zu lassen, die das extra sortiert.

    Benjamin

    1. Danke,
      genau das hab ich gesucht! Noch eine kleine Frage,
      wie kann ich es verwirklichen das man die Seiten "Blättern" kann ? Nach 5 Ausgelesen Zeilen der MySQL Datenbank soll schluss sein und dann untern ein Link angezeigt werden (Weiter...)

      Bis dann
      Torsten

      1. Hallo Torsten,

        dies schaffst du mit dem Befehl LIMIT in Mysql.

        Mit Limit kannst du sagen, wo er anfangen soll und wieviel dass er auslesen soll.

        Bei der Weiter, bzw. zurück Funktion gibst du dann eben immer einen Parameter für das Limit mit.

        Alles Klar?

        Innuendo

        Danke,
        genau das hab ich gesucht! Noch eine kleine Frage,
        wie kann ich es verwirklichen das man die Seiten "Blättern" kann ? Nach 5 Ausgelesen Zeilen der MySQL Datenbank soll schluss sein und dann untern ein Link angezeigt werden (Weiter...)

        Bis dann
        Torsten

        1. Und wie genau muss ich das dann einbauen ?
          so?:
          $blabla = "select * from personen LIMIT 5";

          Bis dann
          Torsten

          1. Moment,

            schneller ginge es zB über eine Archivsuche, wie man limit einsetzt.

            select * from personen LIMIT 5, 10

            du musst sagen:

            * wo beginne
            * wieviel nimm dir

            alles oki, doki so far?

            Innuendo

            Und wie genau muss ich das dann einbauen ?
            so?:
            $blabla = "select * from personen LIMIT 5";

            Bis dann
            Torsten

        2. www.mysql.com

          SELECT [STRAIGHT_JOIN]
                 [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
                 [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY]
                 [DISTINCT | DISTINCTROW | ALL]
              select_expression,...
              [INTO {OUTFILE | DUMPFILE} 'file_name' export_options]
              [FROM table_references
                [WHERE where_definition]
                [GROUP BY {unsigned_integer | col_name | formula} [ASC | DESC], ...]
                [HAVING where_definition]
                [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]
                [LIMIT [offset,] rows]
                [PROCEDURE procedure_name]
                [FOR UPDATE | LOCK IN SHARE MODE]]
          1. start/länge
          mysql> select * from table LIMIT 5,10;  # Retrieve rows 6-15
          If one argument is given, it indicates the maximum number of rows to return:
          mysql> select * from table LIMIT 5;     # Retrieve first 5 rows

          du kannst übrigens in der sql-abfrage fast alles miteinander kombinieren und so die suchergebnisse filter und sortieren bis zum bittereen Ende, hörte sich so an, als ob du das nicht wußtest...

          Odium