Christian Leicht: Sortierreihenfolge ändern

Könnt Ihr mir einen Tipp geben wie ich es anstellen kann die Sortierreihenfolge einer Datenbankausgabe in PHP zu ändern. Gibt es dafür vielleicht schon eine fertige Klasse ?

Ich habe eine Tabelle mit unsortierten Einträgen aus der mySQL Datenbank mittels PHP normal dargestellt und möchte per Buttom eine Zeile nach oben oder nach unten in der Reihenfolge verschieben.

Könnt Ihr mir einen Tipp geben ?

Besten Dank für Hilfe
Christian

  1. Hallo Christian!

    Könnt Ihr mir einen Tipp geben wie ich es anstellen kann die
    Sortierreihenfolge einer Datenbankausgabe in PHP zu ändern. Gibt es
    dafür vielleicht schon eine fertige Klasse ?

    Warum nicht im der SQL-Abfrage mit "ORDER BY"?

    Siehe hierzu folgenden Link:
       - MySQL-Manual: 4.3.4.4 Zeilen sortieren
         http://dev.mysql.com/doc/mysql/de/Sorting_rows.html

    1. Sorry Ihr habt mich nicht verstanden.

      Natürlich wird per ORDER BY sortiert, aber ich habe eine Tabelle per PHP dargestellt und will nun mit Befehlen die Reihenfolge ändern:

      Deutschland       -  nach unten
      Österreich          - nach oben | nach unten
      Schweiz             - nach oben | nach unten
      Italien                 - nach oben | nach unten
      Frankreich          - nach oben | nach unten
      Spanien             - nach oben | nach unten
      Niederlande       - nach oben

      versteht Ihr was ich meine ?

      Christian

      1. Hi,

        versteht Ihr was ich meine ?

        Ja! Warum nicht einfach die Sortierreihenfolge per Variable an den Link dranhängen und dann ins SQL-Statement einbauen?

        Also z.B. '<a href="' . $_SERVER["SCRIPT_NAME"]. '?order=DESC"...
        und dann im PHP-Skript mysql_db_query("SELECT * FROM tabelle WHERE ... ORDER BY " . $_REQUEST["order"]);

        Der Yeti

        --
        Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
        Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
        Und bin so klug als wie zuvor!
        sh:( fo:| ch:? rl:? br:  n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
        http://community.de.selfhtml.org/fanprojekte/selfcode.htm
        1. Sorry Ihr habt mich immer noch nicht verstanden.

          Ich muss nicht die Sortierreihenfolge ändern (ja, eigentlich schon), sondern die Reihenfolge der Anzeige.

          Die Datensätze haben eine Feld mit einer Nummer nach der sortiert wird.
          1 2 3 4 5 6 7 8 9

          Jetzt muss Datensatz 5 zu 4 werden damit er um eine Position nach oben rutscht. Dabei wird aber 4 zu 5.
          Also muss ich 2 Datensätze ändern.

          Dazu muss es doch schon was geben ?

          Christian

          1. Hi,
            aah, ok. Jetzt kapiert. Du willst nur ein Element sozusagen "bubblen" lassen (in Anlehnung an Bubble-Sort).

            Meine erste Idee: Angenommen, du hast alle Datensätze in einem Array.
            $temp = $array[5];
            $array[5] = $array[4];
            $array[4] = $temp;

            Der Yeti

            --
            Habe nun, ach! WInfo, BWL, und Mathe, Und leider auch Info!
            Durchaus studiert, mit heißem Bemühn. Da steh' ich nun, ich armer Thor!
            Und bin so klug als wie zuvor!
            sh:( fo:| ch:? rl:? br:  n4:& ie:( mo:| va:| de:[ zu:) fl:| ss:) ls:< js:|
            http://community.de.selfhtml.org/fanprojekte/selfcode.htm
      2. Hallo Christian,

        versteht Ihr was ich meine ?

        ich glaube, ja. Ich mache das so, dass ich in den Tabellen, bei denen ich die Möglichkeit haben will die Reihenfolge festzulegen, eine zusätzliche Spalte "sort" anlege in der eine Zahl eingegeben werden kann - und nach dieser wird dann sortiert (die Idee stammt übrigends aus dem phpBugTracker :-)).

        Grüße aus Nürnberg
        Tobias

  2. Hallo!

    Ich habe eine Tabelle mit unsortierten Einträgen aus der mySQL Datenbank mittels PHP normal dargestellt und möchte per Buttom eine Zeile nach oben oder nach unten in der Reihenfolge verschieben.

    Zitat aus http://at.php.net/manual/de/function.array-splice.php: »Sind offset und length so angegeben dass nichts entfernt wird, werden die Elemente von replacement  an der von offset spezifizierten Stelle eingefügt«. Also damit einfügen und mit http://at.php.net/manual/de/function.array-slice.php ausschneiden und so tun als hätte an der Torte noch niemand geknabbert.

    Beste Grüße
    Viennamade