Michi: Tabelle sortieren

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

  1. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. 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

      1. 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

  2. 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

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.