Ankündigung

Einklappen
Keine Ankündigung bisher.

Sortieren per Link

Einklappen

Neue Werbung 2019

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

  • Sortieren per Link

    Hallo,
    Zu aller erst bin ich neu hier in diesem Forum.
    Ich habe eine Frage, was das sortieren einer Liste durch einen oder mehrere links betrifft.
    Aufgabe ist, eine Liste mit Kunden (3) zu erstellen unter denen jeweils ihre bestellten Produkte stehen. Zusätzlich möchte ich nun die Tabelle sortieren und zwar nach den Namen der Kunden und dem Datum des bestellten Produkts durch den Klick auf einen jeweiligen Link ohne. Dabei soll durch Klick auf den einen Link, der nach Datum sortiert, die andere Sortierung, die nach Namen sortiert, immer noch aktiv bleiben. Bsp. Klick auf "Name absteigend" -> Namen werden absteigend sortiert. Klick auf "Datum absteigend" -> Daten werden absteigend sortiert, Namen bleiben ebenfalls absteigend sortiert und ändern sich nicht.
    Das ganze sieht bei mir im Moment so aus:



    mein Skript ist bislang soweit:
    PHP-Code:
    <?php

    @mysql_connect("localhost","root","")
     or die(
    "Verbindung zu MySQL gescheitert!");
    @
    mysql_select_db ("Praktikum")
     or die(
    "Datenbankzugriff gescheitert!");
        
        
    $sortname=" ";
        
          If(
    $_GET['sortname'] == 'up') {
            
    $sortname="ASC";
          }
          If(
    $_GET['sortname'] == 'dn') {
            
    $sortname="DESC";
          }  
          
        
    $sortdate=" ";
                        
          If(
    $_GET['sortdate'] == 'up') {
            
    $sortdate="ASC";
          }
          If(
    $_GET['sortdate'] == 'dn') {
            
    $sortdate="DESC";
          } 

          
          echo 
    "<a href=\"Kundenumsaetze.php?sortdate=" $sortdate "&sortname=up\"> Name aufsteigend</a>&nbsp&nbsp"
          echo 
    "<a href=\"Kundenumsaetze.php?sortdate=" $sortdate "&sortname=dn\"> Name absteigend</a><br>";
          echo 
    "<a href=\"Kundenumsaetze.php?sortname=" $sortname "&sortdate=up\"> Datum aufsteigend</a>&nbsp";
          echo 
    "<a href=\"Kundenumsaetze.php?sortname=" $sortname "&sortdate=dn\"> Datum absteigend</a>";

          
    $sql "SELECT * FROM kunden order by Kurzname $sortname";
            
    $result mysql_query($sql);
                echo 
    "<table border'1' cellspacing='0'>\n";
                echo 
    "<tr><th>Nr.</th><th>Kurzname</th><th>Name</th><th>Plz</th><th>Ort</th><th>Strasse</th></tr>\n";
                    while(
    $row mysql_fetch_assoc($result)) {
                        echo 
    "<tr>";
                        foreach (
    $row as $key => $value) {
                            echo 
    "<td>$value &nbsp;</td>\n";
                        }
                        echo 
    "</tr><tr><td colspan=6>";
                         
                            
    $sql1 "SELECT * FROM umsaetze WHERE KundeNr = ".$row["Nr"]." order by Datum $sortdate;
                            
    $result1 mysql_query($sql1);
                                echo 
    "<table border'1' cellspacing='0'>\n";
                                echo 
    "<tr><th>BuchungsNr.</th><th>KundeNr.</th><th>Buchungstext</th><th>Betrag</th><th>Datum</th></tr>\n";
                                    while(
    $row1 mysql_fetch_assoc($result1)) {
                                        echo 
    "<tr>";
                                        foreach (
    $row1 as $key1 => $value1) {
                                            echo 
    "<td>$value1&nbsp;</td>\n";
                                        }
                                        echo 
    "</tr>";  
                                    }
                                echo 
    "</table>";
                    }    
                        echo 
    "</td></tr></table>\n";

    mysql_close();
    ?>
    Ich hoffe ihr könnt mir weiterhelfen und dass meine Frage berechtigt ist.

    lg Xera

  • #2
    Hi.

    Schön übersichtlicher code! Und was genau funktioniert nicht, oder gibt es eine Fehlermeldung? Du solltest die Get-Parameter noch prüfen (SQL Injection usw.)!

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

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

    Kommentar


    • #3
      nein, keine Fehlermeldung..
      das Problem besteht nur darin, dass wenn ich auf "Name absteigend" klicke, sortiert er die Namen auch absteigend, also Rummel nach oben, aber sobald ich auf "Datum ab-/aufsteigend" klicke sortiert er zwar die Daten auf richtig aber die Namen werden wieder in urzustand gesetzt (also aufsteigend sortiert). Es soll jedoch die absteigende Sortierung der Namen beibehalten. Das ist momentan mein einziges Problem und ich seh einfach nicht worans liegen kann, und im internet finden tu ich dazu auch nix.

      Xera

      Kommentar


      • #4
        Ahh...du wilslt die einmalige Sortierung dann beibehalten, korrekt? Dann ist dein Stichwort hidden Felder oder Sessions. Dort kannst du die gesetzten Sortierung jeweils übergeben oder beibehalten!

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

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

        Kommentar


        • #5
          Zitat von wolf29 Beitrag anzeigen
          Schön übersichtlicher code!
          Abgesehen vom EVAVAVAVAVAVAVAVAVA... Prinzip. *scnr*
          [I]Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)[/I]
          [I]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/I]

          Kommentar


          • #6
            ...

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

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

            Kommentar


            • #7
              Ahh...du wilslt die einmalige Sortierung dann beibehalten, korrekt? Dann ist dein Stichwort hidden Felder oder Sessions. Dort kannst du die gesetzten Sortierung jeweils übergeben oder beibehalten!
              Korrekt!
              ok, öhm könntest du da sagen was am besten zu ändern ist? oder ist es so wie ich das jetzt probiert hab komplett falsch? ich bräuchte wenigstens beispiel oder so was ich jetzt machen kann.

              Abgesehen vom EVAVAVAVAVAVAVAVAVA... Prinzip. *scnr*
              Pah...solangs funktioniert :P

              Kommentar


              • #8
                Das Prinzip an sich ist einfach: hidden Felder sind odch nicht optimal, da du ja keine Form hast. Dann mache es sonst als zusätzlichen GET -Parameter den du an den jeweiligen Link ranhängst und auswertest
                Möglich ist es auch mit Session Variablen die du entsprechend füllst und wieder leerst. Daraus baust Du dir dann auch deine kombinierte Abfrage!

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

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

                Kommentar


                • #9
                  Ich glaub ich steh grad irgendwie aufm schlauch... Kannst du nicht mal den Befehl schreiben den du meinst ?
                  Vielleicht versteh ich's dann..Sorry

                  Xera

                  Kommentar


                  • #10
                    ...das ist ein bißchen mehr als ein Befehl! Wenn du z.B. mit GET-Parametern arbeiten willst, dann hängst Du einen zusätzlichen z.B. DEFAULT Wert an deine Sortierlinks. Dieser Wert wird standartmässig auf irgendeinen Wert gesetzt, bis er geändert wird, durch klick auf einen anderen link. Du prüfst dann einfach, ob der Standartwert noch gesetzt ist und wenn nicht, fügst du das deinem SQL Statement hinzu, oder mit Session die jeweilige Sortierung zwischenspeichern bis zur nächsten Sortierung und danach neu setzen!

                    Wolf29

                    P.S. das wird Dir hier wohl keiner fertig schreiben, da man an unterschiedlichen Stellen im Code arbeiten muss -> wenn doch: Glück gehabt. Wichtig ist, dass Du das Prinzip verstehst (die 2 Möglichkeiten sind jetzt nur Beispiele, wie man sowas umsetzen kann)!
                    while (!asleep()) sheep++;

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

                    Kommentar


                    • #11
                      AHHH..
                      Klasse habs nun hingekriegt. Danke dir Wolf29

                      Kommentar


                      • #12
                        Super und es hat noch den schönen Nebeneffekt, dass deutlich mehr lernst, als wenn dir das jemand proggt!

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

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

                        Kommentar

                        Lädt...
                        X