unterschiedliche Sortierungen in Tabelle ausgeben

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

  • unterschiedliche Sortierungen in Tabelle ausgeben

    Hi,

    ich habe eine MySQL-Tabelle mit den Feldern
    Code:
    +----+---------+---------+
    | id | name    | punkte  |
    +----+---------+---------+
    |  1 | Schmidt | 44      |
    |  2 | Meier   | 33      |
    |  3 | Müller  | 22      |
    +----+---------+---------+
    Meine Frage: Wie kann ich die Daten jetzt so auslesen lassen, dass ich sie in einer Tabelle in drei unterschiedlichen Spalten, aber jeweils sortiert, ausgeben kann (mit PHP).

    Also letzten Endes sollte die Ausgabe mit PHP, als eine Tabelle, dann so aussehen:

    Code:
    sortiert nach id  | sortiert nach name  | sortiert nach punkten
    
    Schmidt (1)       | Meier               | Müller (22)
    Meier (2)         | Müller              | Meier (33)
    Müller (3)        | Schmidt             | Schmidt (44)
    Ich weiß leider nicht, wie die richtige SELECT-Abfrage lauten muss.... oder ob ich drei SELECTs machen muss und dann die Arrays mit einem PHP-Befehl sortieren kann.....

    Würde mich sehr über Hilfe freuen.

    Viele Grüße
    Boron

  • #2
    lass es dir doch schon von der DB sortieren mit insgesamt drei queries.

    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Hier ein Codeschnipsel aus einem meiner Programme:

      PHP-Code:
      if($sort==""){
         
      $sort "punkte";   // Standard-Sortierung, wenn $sort nicht definiert
      }

      if(
      $sort=="name"){
        
      $data "SELECT * FROM `dbname` ORDER BY name";
         
      // Nach der Spalte "name" sortieren
      } elseif($sort=="punkte"){
        
      $data "SELECT * FROM `dbname` ORDER BY punkte DESC, name";
         
      // Nach der Spalte "punkte" sortieren; bei gleicher Punktzahl nach "name"
      } else {
        
      $data "SELECT * FROM `dbname` ORDER BY ".$sort." DESC, NAME";
         
      // Nach einer anderen Spalte sortieren
      }

        
      $data mysql_query($data);

      ->> 
      Aufgerufen wird die Sortierung dann über
             
      "deineseite.php?sort=spaltenachdersortiertwerdensoll" 
      Zuletzt geändert von ; 08.10.2005, 17:37.

      Kommentar


      • #4
        sunworker, brich deinen code um, damit man nicht scrollen muss.

        Kommentar


        • #5
          Original geschrieben von penizillin
          sunworker, brich deinen code um, damit man nicht scrollen muss.
          Schon passiert - Ein "Bitte" hätte aber auch nicht geschadet...

          Kommentar


          • #6
            entschuldige.

            Kommentar


            • #7
              OffTopic:
              Original geschrieben von sunworker
              Schon passiert - Ein "Bitte" hätte aber auch nicht geschadet...
              du musst aber auch ihn verstehen ... schliesslich bist du nicht der erste, der die regeln nicht befolgt. ;-)
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                sunworker, dein Script hätte mich nicht weitergebracht.

                Problem so gelöst:

                PHP-Code:
                $result0 mysql_query("SELECT id,name,punkte FROM ".$table." ORDER BY id ASC");
                 
                $result1 mysql_query("SELECT id,name,punkte FROM ".$table." ORDER BY name DESC");
                    
                $result2 mysql_query("SELECT id,name,punkte FROM ".$table." ORDER BY punkte DESC");

                echo 
                "<table>";
                  echo 
                "<tr>";
                    echo 
                "<td>sortiert nach id</td>";
                    echo 
                "<td>sortiert nach name</td>";
                    echo 
                "<td>sortiert nach punkten</td>";
                  echo 
                "</tr>";

                for(
                $i 0$i mysql_num_rows($result0); ++$i
                {
                      
                $row0 mysql_fetch_assoc($result0);
                      
                $row1 mysql_fetch_assoc($result1);
                      
                $row2 mysql_fetch_assoc($result2);
                      
                      echo 
                "<tr>";
                        echo 
                "<td>".$row0["name"]."</td>";
                        echo 
                "<td>".$row1["name"]."</td>";
                        echo 
                "<td>".$row2["name"]."</td>";
                      echo 
                "</tr>";  
                      
                }
                echo 
                "</table>"

                Kommentar


                • #9
                  dein Script hätte mich nicht weitergebracht.
                  er hat auch nicht gesagt, dass du es 1:1 übernehmen sollst. es war mehr als gedankenstütze für dich gedacht.

                  und davon abgesehen hast du genau das dennoch 1:x umgesetzt. nur halt nicht mit dem if eine auswahl aus 3+ genommen, sondern genau deine drei gewünschten sortierungen gleichzeitig verwendet!
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Das Problem lag doch nich daran, drei SELECT abfragen zu schreiben,
                    sondern in der FOR - Schleife.

                    Kommentar


                    • #11
                      wenn du meinst ....
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar

                      Lädt...
                      X