Hierarchische Ausgabe bei JOIN-verknüpften Tabellen

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

  • Hierarchische Ausgabe bei JOIN-verknüpften Tabellen

    Hallo!

    Folgendes Problem plagt mich zur Zeit, bei dem mir auch die zahlreichen guten Tutorials noch nicht helfen haben können. Wenn ich das nicht bald löse, dann gehe ich ein…

    Um das Problem einfach und übersichtlich zu schildern, verwende ich mal Tierklassen als Beispiel und lasse möglichst viele weitere Eigenschaften weg. Nehmen wir mal an, wir haben eine MySQL-Tabelle mit einigen willkürlichen Tierklassen, also Vögel, Säugetiere, Reptilien, Fische. Jede Klasse hat eine entsprechende KlassenID

    $Tabelle_Klassen: KlassenID | Tierklasse

    Nun haben wir noch eine Tabelle mit verschiedenen Tieren, die jeweils über die KlassenID einer Tierklasse zugeordnet werden:

    $Tabelle_Tiere: TierID | Tiername | KlassenID

    Nun möchte ich – wenn das überhaupt möglich ist – die Tiernamen hierarchisch ausgeben, und zwar so, dass alle Tiernamen unter der Überschrift seiner Tierklasse stehen. Gleichzeitig sollte das so geschehen, ohne dass die Tierklassen vorher noch in einem Array oder ähnlichem gespeichert werden. Kurz: Mit nur einer Mysql Abfrage.

    Vögel
    Rotkelchen
    Kakadu
    Storch
    Krähe

    Säugetiere
    Hund
    Hirsch
    Mensch

    Reptilien
    Krokodil
    Eidechse

    Ich hatte mir dazu schon lauter Tutorials zu Joins durchgelesen, aber immer das Gefühl, dass diese hierarchische Ordnung nicht möglich ist. Soweit bin ich:

    PHP-Code:
    $GetData mysql_query("SELECT $Tabelle_Klassen.KlassenID, 
     
    $Tabelle_Klassen.Tierklasse, $Tabelle_Tiere.Tiername, 
    $Tabelle_Tiere.KlassenID FROM $Tabelle_Klassen LEFT JOIN 
    $Tabelle_Tiere ON $Tabelle_Klassen.KlassenID = 
    $Tabelle_Tiere.KlassenID;"); 
    Jetzt die Ausgabe: (Wie nur?!?)

    PHP-Code:
    while ($CurrentData mysql_fetch_array($GetData)){
        
    echo 
    <b>’ $GetData['$Tabelle_Klassen.KlassenID '] . </b>;


    Und anschließend müssten jetzt alle Tiernamen gedruckt werden, die zur aktuellen Klasse gehören. Wie nur? Bin ich hier auf einem Holzweg?

    Ich würde mich wahnsinnig über eure Hilfe freuen!

    Mit besten Grüßen,

    Robert

  • #2
    => gruppenwechsel?

    durchlauf die daten, die du gequeriet hast. jedesmal, wenn sich die klasse ändert, erzeugst du vor der ausgabe des tiers die der klasse.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Hallo!

      Einen herzlichen Dank für diesen feinen Tipp!
      Für alle, die das gleiche "Problem" mal haben (werden), ist hier nochmal der richtige Code:

      1. Einträge selektieren

      PHP-Code:
      $GetData mysql_query("SELECT $Tabelle_Klassen.KlassenID, 
       
      $Tabelle_Klassen.Tierklasse, $Tabelle_Tiere.Tiername, 
      $Tabelle_Tiere.KlassenID FROM $Tabelle_Klassen LEFT JOIN 
      $Tabelle_Tiere ON $Tabelle_Klassen.KlassenID = 
      $Tabelle_Tiere.KlassenID;"); 
      2. Eintrag für Eintrag auslesen, und den „Titel“ - also hier die Tierklasse - in einer Variablen zwischenspeichern. Wenn sich die Tierklasse ändert, dann wird sie (fett) gedruckt und anschließend werden alle Tiere darunter abgedruckt.

      PHP-Code:
      While ($AktuellerEintrag mysql_fetch_array($GetData)){
       
          if (
      $Titel != $AktuellerEintrag['Tierklasse']) {echo '<b>' $AktuellerEintrag ['Tierklasse'] . '</b>';}
          
          echo 
      $AktuellerEintrag['Tiername'];
          
          
      $Titel $AktuellerEintrag['Tierklasse'];

      Ich hatte mich lange sehr schwer damit getan…

      Danke und Grüße,

      Robert

      Kommentar

      Lädt...
      X