Tabelle sortieren
Michi
- php
Hallo zusammen
Ich habe folgenden Code zusammengebastelt, denke aber er ist nicht sauber programmiert.
Der Code sollte eigentlich (also das heisst, er macht es momentan auch), dem Besucher die Möglichkeit geben, eine Tabelle nach der ID (aufsteigen oder absteigen) zu sortieren.
Hat mir jemand einen Tipp, wie man das sauber programmieren würde?
$docs = "SELECT * FROM docs ORDER BY ID ". $sort;
if ($_POST['sort'])
{
$sort = " desc";
}
else
{
$sort = " asc";
}
$docs_query = mysql_query($docs) or die (mysql_error());
Hier noch die Links:
<a href='" . $PHP_SELF . "?sort=asc'>auf</a> |
<a href='" . $PHP_SELF . "?sort=desc'>ab</a>
Danke und Gruss
Michi
Hello,
error_reporting(E_ALL);
$docs = "SELECT * FROM docs ORDER BY ID ". $sort;
if ($_POST['sort'])
{
$sort = " desc";
}
else
{
$sort = " asc";
}
echo "<p>SQL-Statement: ".htmlentities($docs)."</p>\n";
$docs_query = mysql_query($docs) or die (mysql_error());
echo "<p>".mysql_error()."</p>\n";
Hier noch die Links:
<a href='" . $PHP_SELF . "?sort=asc'>auf</a> |
<a href='" . $PHP_SELF . "?sort=desc'>ab</a>
Dann sollte eigentlich alles klar werden.
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom
Dann sollte eigentlich alles klar werden.
Leider nur bedingt. Die Fehlermeldungen haben mich ja darauf gebracht, dass es nicht sauber ist ;-)
Dann wollte ich es besser machen, nur leider hat es dann nicht mehr funktioniert.
Gruss
Michi
Hallo Michi,
Dann sollte eigentlich alles klar werden.
Leider nur bedingt. Die Fehlermeldungen haben mich ja darauf gebracht, dass es nicht sauber ist ;-)
a) Dein Skript tut also, was es soll?
b) Du bist allerdings der Ansicht, dass es noch Fehler enthält?
b) Richtig, es sind noch Fehler drin.
Falls a) zutreffend ist: wie sieht es mit
register_globals
in php.ini aus? Steht der Eintrag auf "on"? Siehe dazu PHP-Handbuch, register_globals.
Wenn register_globals = off und dennoch a) zutreffend ist, dann hast Du zuwenig Quellcode gepostet :-)
Dann wollte ich es besser machen, nur leider hat es dann nicht mehr funktioniert.
Weiterhin wolltest Du bestimmt den Fall abfangen, dass Dein Skript _ohne_ Parameter aufgerufen wird; das Standardverhalten sollte aufsteigende Sortierung sein. Hab' ich das richtig interpretiert?
Wenn ja, solltest Du, wie MudGuard Dir bereits schrieb, die Reihenfolge Deiner Anweisungen beachten.
Warum funktioniert das auch beim ersten Aufruf? Du erhältst die Daten aufsteigend sortiert, obwohl
$_POST['sort']
false zurückliefert. Klar, die SQL-Anweisung lautet dann
SELECT * FROM docs ORDER BY ID
,
denn $sort ist nicht initialisiert und wird daher als Leerstring interpretiert.
Somit gibst Du keine Sortierreihenfolge an und die Standardsortierung ist aufsteigend (ASC) => Du erhältst das gewünschte Resultat.
Ansonsten informiere Dich bitte darüber, in welchem superglobalen Array Du Parameter aus dem Querystring zu suchen hast. Die Funktion isset() kann Dir wahrscheinlich auch weiterhelfen.
Freundliche Grüße
Vinzenz
Hi,
$docs = "SELECT * FROM docs ORDER BY ID ". $sort;
if ($_POST['sort'])
{
$sort = " desc";
}
else
{
$sort = " asc";
}
Was versprichst Du Dir davon, die Variable $sort zu setzen, NACHDEM sie verwendet wurde?
cu,
Andreas