Moses: Sortierung einer MySql Abfrage

Hallo,
ich arbeite mit PHP und MySql.
Nun habe ich eine MySql Abfrage die ich mit einer While Schleife auslese und die mir folgendes Ergebniss gibt:
Name - letzter Besuch - gesamt Rechnung - Anzahl der Besuche - durchschnittlicher Betrag
Diese Liste habe ich in der Abfrage nach Gesamt Betrag sortiert.
Nun die Frage ist es möglich, das fertige Ergebniss neu zu sortieren, ohne die Abfrage zu wieder holen?
(Möchte die Überschriften der Tabelle mit Link versehen, so daß wenn man auf die jeweilige Überschrift klickt die Sortierung nach dem jeweiligen Ergebniss angezeigt wird. Bisher habe ich das immer so gemacht, daß in diesem Fall eine neue Abfrage erfolgt, und wollte wissen ob man das ohne großen Aufwand vermeiden kann).

Danke für jede Hilfe,
Moses

  1. Hallo Moses!

    Grundsätzlich ist es möglich - du könntest das Ergebnis der Abfrage in ein Array lesen und dieses nach belieben sortieren. Allerdings ist dies nicht die übliche (weil rechnerintensive) Lösung.

    Wie Du schon richtig bemerkt hast, solltest Du lieber die Abfrage nach dem Klick auf den Spaltenkopf neu starten - dies wird bei allen mir bekannten Plattformen so gemacht ;-)

    mfg

    norbert =:-)

    1. Hi Moses,

      ich kann mich Norbert nur anschließen.
      Füge in die Query einfach eine Variable ein.
      ... order by $sorty ...

      $sorty belegst Du dann am Anfang der Seite einfach mit dem gewünschten Wert. Wenn Du Aufsteigend und Absteigend sortieren lassen willst, brauchst Du noch eine kleine Abfrage.

      Also:
      Nehmen wir mal an, ein Spaltenkopf wäre Nachname!
      Bei ersten klick auf Nachname wird Aufsteigend sortiert, also
      sehr, sehr vereinfacht:
      if ($Nachname and $sorty != "Nachname") $sorty = "Nachname";
      elseif ($Nachname and $sorty == "Nachname") $sorty = "Nachname desc";

      So kannst Du beim Klick auf den Spaltenkopf aufsteigend und absteigend sortieren.

      Vielleicht hilft Dir das ja ein wenig weiter ....

      Viel Erfolg,
      Sebastian

  2. Hi,

    Nun die Frage ist es möglich, das fertige Ergebniss neu zu sortieren, ohne die Abfrage zu wieder holen?

    Du hast die Daten nach der Abfrage sicherlich in einem mehrdimensionalen Array!? Dieses kannst DU nach verschiedensten Kriterien sortieren
    z.B. http://www.php.net/manual/de/function.array-multisort.php
    dort findest Du auch andere Sortieralgorithmen

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    sh:( fo:| ch:? rl:( br:& va:| zu:) ss:| ls:[
    Die Erklärung zum Selfcode findest du hier: http://emmanuel.dammerer.at/selfcode.html
    Einen Decoder für den Selfcode findest du hier: http://peter.in-berlin.de/projekte/selfcode
  3. Hallo,

    Bisher habe ich das immer so gemacht, daß in diesem Fall eine neue Abfrage erfolgt, und wollte wissen ob man das ohne großen Aufwand vermeiden kann).

    Nein. Der Aufwand rechtfertigt das ganze nicht. Fall Dein Datenbankserver _extrem_ langsam ist könntest Du rein theoretisch die Daten in ein Textfile schreiben - die müssen ja bvei einem Neuaufruf wieder zur Verfügung stehen... Dann brauchst Du noch eine Sessionverwaltung und eine Möglichkeit überalterte Dateien zu löschen.

    Aber: Mal quer gedacht:

    Eine ganz andere Lösung wäre mit Javascript denkbar: Dann kannst Du die Daten mit zum Client übertragen und lässt den sortieren. Das ist nicht besonders aufwendig.

    Nachteil: die bekannten.

    Zur Not kannst Du ja den Browser "fragen", ob javascript aktiv ist und dann auf das Skript verzichten und die DB wieder abfragen.

    fastix®