Verzweigte Navigation mit MySQL ohne Variablenübergabe

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

  • Verzweigte Navigation mit MySQL ohne Variablenübergabe

    Hi,

    ich habe ein schwieriges Problem. Ziel soll sein, einen Navigations-Tree mit unbeschränkter Anzahl (Tiefe) an Unterkategorien aus MySQL auszulesen und natürlich auszugeben. Problem dabei ist jedoch, dass keine Variablen (keine Session-Vars etc.) übergeben werden, d.h. man hat nur den aktuellen Filename über die Funktion basename().

    Konkrete Frage:
    Wie bekomme ich es nun hin, in unbegrenzter Tiefe alle (Unter-) Kategorien auszulesen, wobei Unterkategorien nur von dem aktuellen Dokument ausgelesen werden sollen.


    Vielen Dank schonmal.

  • #2
    Re: Verzweigte Navigation mit MySQL ohne Variablenübergabe

    Original geschrieben von sir_holmes
    Problem dabei ist jedoch, dass keine Variablen (keine Session-Vars etc.) übergeben werden, d.h. man hat nur den aktuellen Filename über die Funktion basename().
    Hm, ob das so clever ist, bezweifle ich ...

    Und wenn du auf mehreren Verzeichnisebenen eine Datei namens index.php oder blah.blubb hast ...?


    Aber nested Sets dürften trotzdem dein Stichwort sein.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Naja, da könnte man ja zur Not den Primaärschlüssel in der Tabelle auf die Spalte "dateiname" oder was auch immer legen.

      Sinnvoll ist das ganze definitiv nicht, der Kunde möchte das aber leider so haben - Stichwort dabei ist "Suchmaschinen-Tauglichkeit", d.h. Google bewertet Pages, die nur mit Variablen korrekt angezeigt werden können, wesentlich schlechter als "normale".

      Kennt sich da jemand evtl. besser mit aus bzw. hat Lösungsvorschläge zum Thema Variablen und Suchmaschinen?

      Kommentar


      • #4
        Suche mal nach mod_rewrite hier im Forum
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Wenn ich mich nicht täuschen sollte, müsste das hier weiterhelfen.
          http://pear.php.net/package/HTML_Menu
          Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
          PHP Sicherheit
          PHPUnit[1-2]
          Professionelle Softwareentwicklung mit PHP 5
          Professionelle PHP 5-Programmierung

          Kommentar


          • #6
            @wahsaga:

            Danke für den Tip, klasse Sache!
            Ich habe über 'nested sets' das Tutorial "Das 'Nested Sets' Modell
            Bäume mit SQL" (http://www.php-resource.de/tutorials/read/21/1/) gefunden. Hat auch super geklappt, auch ohne Variablenübergabe etc...

            Bisher habe ich alles hinbekommen, abgesehen vom Löschen einzelner Einträge im Baum.

            Hier die angepassten SQL-Queries aus dem Tutorial:
            [COLOR=red]
            // insert document in table docnode
            // for new node
            if($root_id == 0){
            $mysql->update("INSERT INTO this_cms_docnode (root_id,docid,docname,docnaviname,lft,rgt) VALUES ('$doc_id','$doc_id','$docname','$docnaviname',1,2)");
            $root_id = mysql_insert_id();
            }
            // for existing node
            else{
            $mysql->update("UPDATE this_cms_docnode SET lft=lft+2 WHERE root_id='$root_id' AND lft>'$rgt' AND rgt>='$rgt'");
            $mysql->update("UPDATE this_cms_docnode SET rgt=rgt+2 WHERE root_id='$root_id' AND rgt>='$rgt'");
            $new_rgt = $rgt+1;
            $mysql->update("INSERT INTO this_cms_docnode (root_id,docid,docname,docnaviname,lft,rgt) VALUES ('$root_id','$doc_id','$docname','$docnaviname','$rgt','$new_rgt')");
            }

            [/COLOR]

            Hier die Felder der Tabelle 'this_cms_docnode':
            node_id smallint(5) (primarykey,auto_increment)
            root_id smallint(5)
            docid smallint(5)
            docname varchar(200)
            docnaviname varchar(200)
            lft smallint(5)
            rgt smallint(5)


            Die Frage ist jetzt also, wie ich einen Eintrag aus dem Baum wieder löschen kann, sodass die Reihenfolge und zuordnung der anderen Dokumente im Baum erhalten bleibt. Das ganze Script basiert auf dem oben genannten Tutorial.
            Zuletzt geändert von sir_holmes; 02.12.2005, 13:19.

            Kommentar


            • #7
              Ja das Tutorial drückt sich um das Löschen.

              Kennst du schon http://www.klempert.de/php/nested_sets/ und http://ffm.junetz.de/members/reeg/DS...00000000000000 (was auf ersterem auch als Literaturangabe steht)?

              Kommentar


              • #8
                Danke, letzterer Link war sehr hilfreich!

                Kommentar

                Lädt...
                X