Honda: mysql - while auflistung

Hallo,

ich habe in einer Datenbank eine Reihe von Werten denen allen jeweils eine Kategorie zugeordnet ist.

Also z.B.

Alfred, Kat1
Christian, Kat3
Elke, Kat4
Anton, Kat3
Karl, Kat8
usw.

ich lese die Daten aus und gebe diese mittels
"while($db = mysql_fetch_object($daten)){...."
aus.

Da ich die Daten jedoch Kategorieweise sortieren möchte, will ich nicht in jedem Kategorieabschnutt die while-Schleife neu durchlaufen lassen, sondern pro Abschnitt jeweils nur die Datensätze die der Kat2 zugeordnet sind, danach der Kat3 usw.

Hat jemand eine Idee wie ich das mit nur einer DB-Abfrage machen kann, ohne dass ich die while-schleife jedesmal voll durchlaufen lassen muss?

Danke & Grüsse,
Honda

  1. Hallo

    ich habe in einer Datenbank eine Reihe von Werten denen allen jeweils eine Kategorie zugeordnet ist.

    Also z.B.

    Alfred, Kat1
    Christian, Kat3
    Elke, Kat4
    Anton, Kat3
    Karl, Kat8
    usw.

    Da ich die Daten jedoch Kategorieweise sortieren möchte,

    verwendest Du

      
    ORDER BY        -- sortiere  
        kategorie,  -- zuerst nach Kategorie  
        name        -- innerhalb der Kategorien nach dem Namen  
    
    

    Wo ist das Problem? Und was hat PHP damit zu tun?

    Freundliche Grüße

    Vinzenz

    1. Hallo,

      Wo ist das Problem? Und was hat PHP damit zu tun?

      ja, das ist mir schon klar.
      ich möchte jedoch in unterschiedlichen Tabellen die einzelnen Kategorien darstellen. Derzeit gebe ich mittels "while" in jeder Tabelle die Datensätze aus (if $kat==1), (if $kat=2) etc.

      D.h. ich muss bei 6 Kategorien 6 mal mit der while-schleife operieren, was sicher optimiert werden könnte, oder?

      Gruß,
      Honda

      1. Hi,

        ich möchte jedoch in unterschiedlichen Tabellen die einzelnen Kategorien darstellen. Derzeit gebe ich mittels "while" in jeder Tabelle die Datensätze aus (if $kat==1), (if $kat=2) etc.

        D.h. ich muss bei 6 Kategorien 6 mal mit der while-schleife operieren, was sicher optimiert werden könnte, oder?

        Natuerlich - wenn du dich informierst, was man unter einem Gruppenwechsel versteht, und wie man ihn umsetzt.

        MfG ChrisB

      2. echo $begrüßung;

        ich möchte jedoch in unterschiedlichen Tabellen die einzelnen Kategorien darstellen. Derzeit gebe ich mittels "while" in jeder Tabelle die Datensätze aus (if $kat==1), (if $kat=2) etc.

        Gib dazu mal ein konkretes Beispiel wie die Tabellen aussehen, die dir die Information liefern. Oder hast du das bereits soweit, dass die Ergebnismenge aus Person und Kategoriename besteht und außerdem in erster Linie nach dem Kategorienamen sortiert ist?

        D.h. ich muss bei 6 Kategorien 6 mal mit der while-schleife operieren, was sicher optimiert werden könnte, oder?

        Wenn der Kategoriename in der Ergebnismenge steht, dann lautet das Stichwort, wie schon erwähnt, Gruppenwechsel. Zuerst merkst du dir in einer Hilfsvariable nichts, z.B. einen Leerstring. Bei jedem Durchlauf vergleichst du die Hilfsvariable mit dem ausgelesenen Kategorienamen und reagierst bei Ungleichheit mit dem Schreiben einer Überschrift oder was immer du willst. Dann geht die Schleife weiter mit dem Ausgeben der Person. Anschließend schreibst du den eben ausgelesenen Kategorienamen in die Hilfsvariable, und weiter geht es mit dem nächsten Durchlauf.

        echo "$verabschiedung $name";