Sortieren in MySQL & PHP
Torsten
- 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
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
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
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
Und wie genau muss ich das dann einbauen ?
so?:
$blabla = "select * from personen LIMIT 5";
Bis dann
Torsten
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
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