Ebene herausfinden

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

  • Ebene herausfinden

    Hallo,

    ich benutze die NestedSet Klasse zum generieren von Navigationsbäumen. Ich habe nun gelesen dass es auch schon eine Klasse gibt, die die Ebene/Tiefe eines Punktes mit in die Datenbank schreibt. Bei meiner Klasse ist das leider noch nicht der Fall.

    Nun habe ich bereits mehrere Menüpunkte eingefügt und möchte herausfinden in welche Ebene sich die einzelnen Punkte befinden. Dazu habe ich mich im Netz umgesehen und folgendes Statement gefunden:

    PHP-Code:
    SELECT s.Namecount(*) AS Level
    FROM NestedSet v
    NestedSet s
    WHERE s
    .l BETWEEN v.AND v.r
    GROUP BY s
    .l
    Wenn ich das auf meine DB anwende kommen völlig falsche Zahlen raus. Level 20 und noch höher. Das kann aber nicht sein, da ich max. 3 Ebene habe.

    Meine DB hat zum Beispiel folgenden Inhalt:

    id root_id name lft rgt
    7 7 Komplettsets 1 28
    9 7 Pumpmarkierer 2 3
    20 7 Spyder 4 21
    21 7 Spyder Victor 5 6
    22 7 Spyder Xtra 7 8
    23 7 Spyder TL-X 9 10
    24 7 Spyder Rodeo 11 12
    25 7 Spyder New Imagine 13 14
    26 7 Spyder E-99 Avant 15 16
    27 7 Spyder Electra DLX 17 18
    28 7 Spyder Fenix 19 20
    19 7 Prodigy 22 23
    29 7 98 Custom 24 25
    30 7 Autococker 26 27
    Wie kann ich die Ebenen in meiner Tabelle herausfinden?

    Beste Grüße,

    Björn
    » http://www.htaccess-generator.com

  • #2
    die Abfrage sieht i.O. aus, falls sie auch mit den Spaltennamen in deiner Tabelle übereinstimmt, was ich jedoch nicht feststellen konnte Frage: warum postest du keinen Real-Code, wenn du Hilfe erwartest?

    Kommentar


    • #3
      Ja, das Statement habe ich natürlich abgeändert.

      Also ich benutze folgendes Statement:

      PHP-Code:
      SELECT s.namecount(*) AS level
      FROM nestedset v
      nestedset s
      WHERE s
      .lft BETWEEN v.lft AND v.rgt
      GROUP BY s
      .lft
      und erhalte die Ausgabe:

      PHP-Code:
      Set-Konfigurator    400
      Pumpmarkierer        476
      Zubehör            204
      Spyder                     272
      Spyder Victor          288
         
      [...] 
      Der Navipunkt Set-Konfigurator sollte Level 1 haben. Also das Statement liefert falsche Werte. Woran kann das liegen?
      » http://www.htaccess-generator.com

      Kommentar


      • #4
        an deine Daten vielleicht
        mach mal einen Dump von der Tabelle (create ... und insert ...) und hänge als zip-Datei an, mal schauen.

        Kommentar


        • #5
          Danke für deine Hilfe. Anbei die ZIP Datei!
          Angehängte Dateien
          » http://www.htaccess-generator.com

          Kommentar


          • #6
            wieviel verschiedene root_ids willst du denn haben?

            wenn du aber alles zu einem menü ( = eine root_id ) zusammenfasst, dann beachte, dass du viele werte für lft und rgt anpassen musst
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Soll dass nun heißen, dass es nur eine root_id je Navigation geben darf? Das wäre fatal...

              Besteht ne Möglichkeit die Navigation doch noch zu verwenden?
              » http://www.htaccess-generator.com

              Kommentar


              • #8
                du kannst mehrere root_ids verwenden, aber bei der abfrage solltest du irgendwo die root_id shcon berücksichtigen...
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Ok soweit verstande, aber wenn ich die root_id in meiner Anfrage berücksichtige kommt trotzdem noch ein Ergebnis raus, was nicht stimmen kann. Ihc erhalte zum Beispiel ein Level von 20. Das kann nicht sein.

                  Hier mein Statement:

                  PHP-Code:
                  SELECT s.namecount(  *  )  AS 
                  LEVEL 
                  FROM nestedset v
                  nestedset s
                  WHERE s
                  .lft BETWEEN v.lft AND v.rgt 
                  AND s.root_id =7
                  GROUP  BY s
                  .lft 
                  Oder habe ich da einen Denkfehler drin?
                  » http://www.htaccess-generator.com

                  Kommentar


                  • #10
                    du hast zwei tabellen mit einer spalte root_id

                    die spalte root_id sollte in beiden tabellen gleich sein, sonst ist die abfrage für die füße. bestenfalls.
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      ok super verstanden... jetzt klappt es... endlich

                      Kannst du mir eine neue nestedset klasse empfehlen die auch das Level gleich mit in die Tabelle schreibt? Bei meiner Klasse mit dem TreeManager funzt das nämlich noch nicht.

                      Danke dir... super Support!
                      » http://www.htaccess-generator.com

                      Kommentar

                      Lädt...
                      X