Probleme mit Kategorieen

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

  • Probleme mit Kategorieen

    Hallo!
    Ich möchte einen Kategorienbaum mit n Unterkategorien anlegen. Meine Tabelle TKategorie hat die folgenden Felder:
    KategorieID Name Beschreibung ParentID Aktiv

    Das einstellen klappt auch Problemlos, z.B.:
    KategorieID Name Beschreibung ParentID Aktiv
    3 # test12 # 3 # 1
    4 # test12a # 3 # 1
    5 # test12aa # 4 # 1

    Jetzt möchte ich das Ganze in einem Dropdown-Feld ausgeben, auch kein Problem, ABER ich möchte, dass die Darstellung so ist:

    test12 (Hauptkategorie)
    + test12a (UK von test12)
    ++ test12aa (UK von test12a)
    usw.

    hier der code:
    PHP-Code:
    echo "<select name=ParentID>";
    #HKs ausgeben....
    $sql "SELECT * FROM `tkategorie` WHERE Aktiv='1' ORDER BY Name";
    $result mysql_query($sql) OR die(mysql_error());
    echo 
    "<option value='Hauptkategorie'>Hauptkategorie</option>";
    echo 
    "<option value='Hauptkategorie'>***</option>";
    echo 
    "<option value='Hauptkategorie'>Unterkategorie von...</option>";
    while(
    $row mysql_fetch_assoc($result))        
    {
    $ParentKategorieID=$row['KategorieID'];
    $Name=$row['Name'];
    echo 
    "<option value='$ParentKategorieID'>+ $Name</option>";
    }
    echo 
    "</select>"
    Momentan wird es so ausgegeben:
    + test12
    + test12a
    + test12aa

    Wie kann ich das lösen??

    Danke und Gruss

  • #2
    Wenn du alle Einträge mit einem + davor ausgibst ist das ja auch klar.
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      genau, steht ja im code.... wie geht es besser

      Kommentar


      • #4
        PHP-Code:
        $string '';
        while(){
        echo 
        $string.$ausgabe;
        $string .= '+';

        Für Rechtschreibfehler übernehme ich keine Haftung!

        Kommentar


        • #5
          Original geschrieben von websdream
          genau, steht ja im code.... wie geht es besser
          Rekursiv auslesen und der Tiefe entprechend die + einbauen, z.B. mit einem static variable als Entscheidungshilfe. So wie du es zur Zeit machst musst du parentid prüfen und entscheiden.

          Kommentar


          • #6
            danke!!!

            Kommentar


            • #7
              uuuupss, doch noch nicht - zu früh gefreut...

              jetzt
              $string = '';
              while(){
              echo $string.$ausgabe;
              $string .= '+';
              }
              wird natürlich vor jede ausgabe ein + gesetzt
              also ergibt sich meine baumstruktur so

              test1
              +test1a
              ++test1b
              +++test1c
              ++++test1d

              und NICHT so:
              test1
              +test1a
              +test1b
              ++test1c
              +++test1d
              +++test1e

              und jetzt? da steig ich nicht durch....

              Kommentar


              • #8
                na komm,

                wenn du das ein plus mehr nur setzen sollst wenn sich der parent ändert, dann geht das doch mit ner if() ganz gut, oder?

                Kommentar


                • #9
                  ggf. mal nach nested sets googlen

                  peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10


                    PHP-Code:
                    if($KategorieID == $ParentID)
                    {
                    echo 
                    "<option value='$KategorieID'>$Name</option>";
                    $string .= '';
                    }
                    else
                    {
                    echo 
                    "<option value='$KategorieID'>$string $Name</option>";
                    $string .= '+';

                    ausgabe:
                    test
                    +test1
                    ++test1a
                    +++test1b
                    test2
                    +++++test2a

                    wie kann ich das abfangen??

                    vielen dank
                    Angehängte Dateien

                    Kommentar


                    • #11
                      lies dir mal das tutorial durch. da wird dein problem genau beschrieben und auch eine lösung geliefert

                      peter
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar


                      • #12
                        oder schau mal hierein http://www.php-resource.de/forum/sho...threadid=44274

                        Kommentar


                        • #13
                          nach wirklich langer sucherei bin ich auf Nested Sets DB Tree gestossen:

                          http://www.phpclasses.org/browse/package/2547.html

                          ist genau das was ich suche & sehr gut zu modifizieren bzw. zu integrieren.

                          danke für die hilfe.

                          Kommentar

                          Lädt...
                          X