Ankündigung

Einklappen
Keine Ankündigung bisher.

Tabelle sortieren, Mysql

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tabelle sortieren, Mysql

    Ich hab mehrere Spalten.. und wenn ich auf eine draufdrücke möchte ich das er mir das sortiert.

    1. Ich drücke auf die erste Spalte, die wird Desc sortiert
    2. Ich drücke auf die nächste Spalte die wird Asc sortiert..
    3. Ich drücke auf die erste Spalte wieder, die wird Desc sortiert

    Jedoch möcht ich das nicht abwechselnd!
    Ich möchte, dass er sich für jede Spalte merkt, was der letzte Wert war.. also Desc oder Asc...

    Wie mach ich das?
    Hab das schon über eine extra Klasse probiert.. wo ich ein assoziatives Array als Singleton erstellt hab.. Jedoch hat das überhaupt nicht funktioniert.
    Gibts da keinen einfacheren Weg?

    Das sind jetzt nur die Code Auszüge, auf die es auch ankommt...

    PHP-Code:
    if($_GET['direction'] == 'DESC' || !isset($_GET['direction'])){
        $direction = 'ASC';
    }
    else{
        $direction = 'DESC';
    }

    $query= ...." ORDER BY ".$sort." ".$direction.";";

    <a href="?user=<?php echo $g_seluser ?>&phase=<?php echo $g_phase ?>&sort=ID&direction=<?php echo $direction?>">ID</a>


  • #2
    Hi.

    Ich verwende eine kleine JavaScript Klasse:

    TableSort

    PHP Alternative: z.B. zwei Get-Parameter an jede Spalte hängen mit ASC oder DESC (Achtung SQL Injection) und Spaltenname und prüfst, mit ner If Abfrage, was du übergibst und reagierst entsprechend und setzt den Wert dann neu!

    Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Zitat von wolf29 Beitrag anzeigen
      Ich verwende eine kleine JavaScript Klasse
      Hat leider den Nachteil, dass erst mal alle Daten geladen werden müssen.

      Zitat von wolf29 Beitrag anzeigen
      zwei Get-Parameter an jede Spalte hängen mit ASC oder DESC
      Joa - oder eben den Status in einer Session/Cookie speichern.
      Je grösser der Dachschaden, desto schöner der Ausblick zum Himmel. - [WIKI]Karlheinz Deschner[/WIKI]

      Kommentar


      • #4
        Ein Get-Parameter pro Spalte würde reichen. Du musst dir nur merken, ob schon mal drauf geklickt wurde oder nicht. Ich würde allerdings auch zur Variante mit den zwei Parametern tendieren. Pfeil rauf und Pfeil runter als Bildchen dran und jeder versteht was gemeint ist.
        Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
        Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)

        Kommentar


        • #5
          Im Prinzip ganz einfach, einfach beim "klick" alle Sortierungen und die Reihenfolgen mit übergeben.

          Code:
          $reihenfolge1 = 'DESC';
          $reihenfolge2 = 'DESC';
          $sql = 'SELECT* 
                  FROM `tabelle`
                  ORDER BY ' . $spalte1 . ' ' . $reihenfolge1 . ', ' .  $spalte2 . ' ' . $reihenfolge2
          "My software never has bugs, it just develops random features."
          "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

          Kommentar


          • #6
            @feela: hat natürlich auch den Nachteil, wenn JavaScript ausgeschaltet ist, aber ich fange das bei mir alles ab! Sollte nur Beispiele/Möglichkeiten aufzeigen!

            wolf29
            while (!asleep()) sheep++;

            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

            Kommentar


            • #7
              Mh.. ich check das nicht ganz.. wie meint ihr das mit 2 Get-Parameter anhängen? Was soll da drinstehen?

              Kommentar


              • #8
                Was spricht gegen die zwei GET-Parameter? sonst hier mal ein kleines Tut dazu:

                Tabellen sortieren mit PHP - PHP (Hypertext Preprocessor) - administrator

                Wolf29

                P.S.: drinstehen könnte z.B. Spaltenname und ASC oder DESC. Möglich auch mit einem Wert, aber so finde ich persönlich das etwas übersichtlicher!
                while (!asleep()) sheep++;

                Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                Kommentar


                • #9
                  Code:
                  <a href="index.php?dbSpalte1=spalte1&order1=desc&dbSpalte2=spalte2&order2=asc">link me</a>
                  PHP-Code:
                  <?php
                  $spalte1 
                  $_GET['dbSpalte1'];
                  $spalte2 $_GET['dbSpalte2'];

                  $reihenfolge1 $_GET['order1'];
                  $reihenfolge2 $_GET['order2'];
                  $sql 'SELECT* 
                          FROM `tabelle`
                          ORDER BY ' 
                  $spalte1 ' ' $reihenfolge1 ', ' .  $spalte2 ' ' $reihenfolge2
                  Nachtrag:
                  Es sollte natürlich validiert werden (siehe: SQL Injenctions)
                  "My software never has bugs, it just develops random features."
                  "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                  Kommentar


                  • #10
                    Mh.. was bringt das für einen Vorteil, wenn ich gleichzeitig auf 2 Spalten sortiere!?

                    Reichts da nicht wenn ich nur nach einem sortiere?

                    Kommentar


                    • #11
                      Zitat von krackmoe Beitrag anzeigen
                      Mh.. was bringt das für einen Vorteil, wenn ich gleichzeitig auf 2 Spalten sortiere!?

                      Reichts da nicht wenn ich nur nach einem sortiere?
                      LOL Du bist ja ein Witzbold. Das ist doch genau das, was du wolltest:

                      Jedoch möcht ich das nicht abwechselnd!
                      Ich möchte, dass er sich für jede Spalte merkt, was der letzte Wert war.. also Desc oder Asc...
                      Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
                      Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)

                      Kommentar


                      • #12
                        Ähm ja.. schon..

                        Aber was bringt es mir.. wenn ich die Spalte1 ASC sortiere und Spalte2 dann DESC?
                        Was hat das mit meinem Problem zu tun!?

                        Da merkt er sich ja wieder nicht, welchen Wert Spalte1 hatte, bevor ich Spalte2 sortiert habe oder!?
                        Raff ich da was nicht?

                        Kommentar


                        • #13
                          Zitat von krackmoe Beitrag anzeigen
                          Raff ich da was nicht?
                          Spätestens jetzt raffe ich nicht mehr was du überhaupt vor hast. Bin mal von der Annahme ausgegangen, du wolltest eine Tabelle nach mehreren Spalten sortieren.
                          Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
                          Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)

                          Kommentar


                          • #14
                            der Vorteil ist folgender...

                            Stell dir vor, du hast eine Tabelle in der Namen vorkommen sprich:
                            Name, Vorname(, und andere Uninteressante)

                            So du willst jetzt nach Namen sortieren....

                            Dann sortierst du nach Name und bekommst 2Mio Müllers angezeigt...
                            Die aber vermutlich immer noch net sortiert sind... Um die Sortierung richtig anzuzeigen sortierst du noch zusätzlich nach Vorname, damit Andreas vor Bernd steht...

                            Code:
                            $sql = 'SELECT * FROM addressen ORDER BY name DESC, vorname ASC
                            Danach kannst du die Sortierung für einzelne Spalten umdrehen wie dus brauchst


                            Wenn du immer noch nicht weißt, warum man 2Spalten sortiert oder du etwas vollkommen anderes gesucht hast, gebe ich auf
                            "My software never has bugs, it just develops random features."
                            "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                            Kommentar

                            Lädt...
                            X