Thomas: Order by... Vereinfachtes Anzeigen einer Tabelle

Hallo zusammen!
Ich hab eine kleine Frage:
Ich habe eine Tabelle, die ich Anzeige. Sie besteht aus normalen Feldern wie Name, Vorname, Firma, etc.
Ich lasse also meine Tabelle anzeigen, kein Problem. Ich lass die Header (Name, Vorname, bla) Als Link erscheinen. Wenn nun der Nutzer kommt und auf einen Link klickt, also zB auf Name, sollen die Namen alphabetisch geordnet werden.
Klar eigentlich kein Problem. Ich könnte für jeden Header eine Datei anlegen... will ich aber nicht.
Gibt es eine Möglichkeit, wo ich in meinem PHP Script sagen kann dass er beim jeweiligen anklicken ordnet? Wie gesagt, ich will das alles in einem Script haben. Meine Tabelle sieht so aus:

---------------------schnipp------------------------
$oci =  "select handle, firma, kunde, name, vorname from denic_handle";
$result = $daba->query($oci);
echo "<table width='100%' border='0' cellspacing='0' cellpadding='0' style='table-layout:fixed'>";
echo "<tr>";
echo "<th style='width:120px'><a href='order.php'><font size=2>Handle</a></th>";
echo "<th style='width:170px'><a href='order.php'><font size=2>Firma</a></th>";
echo "<th style='width:170px'><a href='order.php'><font size=2>Kunde</a></th>";
echo "<th style='width:100px'><a href='order.php'><font size=2>Name</a></th>";
echo "<th style='width:100px'><a href='order.php'><font size=2>Vorname</a></th>";
echo "<th style='width:100px'><a href='order.php'><font size=2>Update</a></th>";
echo "</tr>";
echo "</table>";
echo "<p>";
while ($row = $result->fetchRow()) {                    echo "<table width='100%' border='0' cellspacing='0' cellpadding='0' style='table-layout:fixed'>";
echo "<tr>";
echo "<td style='width:120px'>";
echo "<font size=2>";
echo $row[0];
echo "</td>";
echo "<td style='width:170px'>";
echo "<font size=2>";
echo $row[1];
echo "</td>";
echo "<td style='width:170px'>";
echo "<font size=2>";
echo $row[2];
echo "</td>";
echo "<td style='width:100px'>";
echo "<font size=2>";
echo $row[3];
echo "</td>";
echo "<td style='width:100px'>";
echo "<font size=2>";
echo $row[4];
echo "</td>";
echo "<td style='width:100px'>";
echo "<form name='form1' method='post' action='update1.php'>";
echo "<font size=2>";
echo "<input type='submit' name='Submit' value='Update'>";
echo "<input type='hidden' name='para' value='$row[0]'>";
echo "</form>";
echo "</td>";
echo "</tr>";
echo "</table>";
-----------------------schnapp---------------------

PS: Nicht wudern. Ist Oracle, nur halt mit Pear Programmiert...
PPS: Das Order.php soll das Script sein, dass entscheidet, wie es geordnet sein sollte.
Thx, Thomas

  1. Hallo,

    du sagts du machst links aus den feldern name, vorname etc.

    • bau doch einen querystring zusammen, der die order by regel enthält...
    • den nimmst du auf der seite entgegen und je nachdem veränderst du deine sql-string...
      z.B.
      echo "<th style='width:120px'><a href='order.php?order=name'><font size=2>Name</a></th>";

    auf der seite

    sort = trim(request.querystring("order")

    sql = "select * from tabelle order by " & sort

    und vielleicht noch testen ob sort einen gültigen feldwert enthält, sonst gehts schief...
    manche user schreiben dann mist von hand in denquerystring um zu sehen was deine db draus macht...

    Odium

    1. Hallo!

      Also ich hab das mal probiert... bin leider ein DB Newbie und somit brauchte ich was länger...
      Ich bin mir nicht ganz sicher, aber kann es sein, dass es unter Oracle kein request.querystring gibt? bei mir nimmt er es absolut nicht an...
      ich hab einfach mal drauf los geändert:

      ----------------schnipp----------------------
      if($sort = request.querystring("name"))
      {
      $oci = "select * from denic_handle order by name";
      }

      --------------------schnapp-------------------

      ich wieß, dass das eigentlich totaler blödsinn ist... aber wie genau soll ich das machen? mir tut sich grad ein großes fragezeichen über dem kopf auf...
      vorher stand da ja sort = request.querystring("order")
      Ich weiß nicht genau wie ich das zu verstehen hab. nimmt er dann alles nach dem order?! oder wie genau übergibt er das?
      Sorry für die Deulingsfragen :-/
      Gruß, Thomas

      1. Hallo,

        die datenbank ist die eine seite, aber mit welcher sprache greifst du denn darauf zu?

        Odium

        1. Ich habe ein PHP Script. Die Sprache selbst ist Pear (unter PHP4) und die Datenbank ist eine Oracle.
          Pear ist in soweit unwichtig, da ich es nur zum Connecten brauche.

          1. Hallo,

            mein beispiel war auch asp...
            den link machst du so wie besprochen, dann...
            $sort = $HTTP_GET_VARS["order"];
            if ($sort != "")
                 {
                 $oci = "select handle, firma, kunde, name, vorname from denic_handle order by" . $sort;
                 }
                 else
                 {
                 $oci = "select handle, firma, kunde, name, vorname from denic_handle order by handle";
                 }

            dann $oci wie gewohnt ausführen und anzeigen...(hast du ja schon enthalten, brauchst du nicht ändern)

            hier nochmal ein guter überblick: http://www.dclp-faq.de/

            Odium

            1. Hallo Odium!
              Also es hat super geklappt, vielen lieben dank!!!!
              gruß, Thomas