Rekursives Menü in PHP, wie am besten?

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

  • Rekursives Menü in PHP, wie am besten?

    hallo,

    ich hab 'ne datenbank mit menüeinträgen die z.b. so aussehen:

    datenbankstruktur:
    menu_id, name, id

    inhalt
    0, omenu1, 1
    0, omenu2, 2
    0, omenu3, 3
    1, umenu1, 4
    1, umenu2, 5
    3, umenu3, 6
    4, uumenu1, 7
    5, uumenu2, 8
    6, uumenu3, 9

    dieses menü möchte ich nun rekursiv so ausgeben, das, wenn man dem skript z.b. die variable menu übergibt, jenes expenadiert wird. also ohne menu gestezt zu haben sieht es z.B. so aus in der ausgabe:

    omenu1
    omenu2
    omenu3

    wenn man nun auf omenu1 klickt, wird die variable menu auf 1 gesetzt, also auf den wert id in der datenbank, und das untermenü zu omenu1 geht auf. ausgabe sieht z.B. so aus:

    *oemu1
    **umenu1
    **umenu2
    *omenu2
    *omenu3

    das funktioniert auch noch alles so wie es soll. die menu variable bei umenu1 ist nun 4, wie in der datenbank das feld id, wenn man nun auf umenu1 klickt sollte die ausgabe so aussehen:

    *omenu1
    **umenu1
    ***uumenu1
    **umenu2
    omenu2
    omenu3

    und hier steh ich auf dem schlauch....... wie kann ich ein komplett rekursives menü aufmachen, das beliebig viele untermenüs haben kann, und der baum nur bis zum jeweiligen menü geöffnet wird?

    für eure hilfe wär ich sehr dankbar!

  • #2
    zeige wie du bisher hast

    Kommentar


    • #3
      PHP-Code:
      <?

      include("include/config.php");
      include("include/db_open.php");

      $cat = $_GET['cat'];

      function categroy_get_init($cat)
        {
        global $dbname;
        global $verbindung;

        $abfrage = "SELECT
                      category_id
                    FROM
                      dev_category
                    WHERE
                      id='$cat'
                    LIMIT 1";
        $erg     = mysql_db_query($dbname, $abfrage, $verbindung);

        list($category_id) = mysql_fetch_row($erg);

        return $category_id;
        }

      function category_show($cat, $open, $recurse)
        {
        global $dbname;
        global $verbindung;

        $abfrage = "SELECT
                      name,
                      id
                    FROM
                      dev_category
                    WHERE
                      category_id='$open'
                    ORDER BY
                      name ASC";
        $erg     = mysql_db_query($dbname, $abfrage, $verbindung);
        while(list($category_name, $category_id) = mysql_fetch_row($erg))
          {
          for($i = 0; $i < $recurse; $i++)
            {
            echo "&nbsp;";
            }
          echo "<a href='?cat=$category_id'>".categroy_get_init($category_id)." ".$category_name."</a><br>";

          if($category_id == $cat)
            {
            category_show($category_id, $category_id, $recurse+3);
            }
          }
        }

      category_show($cat, 0, 0);

      include("include/db_close.php")

      ?>
      es soll halt am ende so funktionieren wie dieses javascript menü hier: http://www.red-omega.com/writing/sitepoint-sample.cfm
      Zuletzt geändert von kuschelberg; 24.06.2005, 11:43.

      Kommentar


      • #4
        hm... warum den Parent extern ermitteln? schau dir mal meine Klasse an, ist zwar mssql aber das soll nicht weiter stören
        http://www.php-resource.de/forum/sho...sql#post292682

        Kommentar


        • #5
          ich schaus mir mal an, danke. mal sehen ob ich das aus der klasse rausgebastelt bekomme...

          Kommentar

          Lädt...
          X