tabelle rekursiv für menubaum auslesen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • tabelle rekursiv für menubaum auslesen

    hallo zusammen,

    ich habe folgende tabelle für einen kleinen shop

    CREATE TABLE `kategorie` (
    `id` int(11) NOT NULL auto_increment,
    `tiefe` int(11) NOT NULL default '0',
    `zeiger` int(11) NOT NULL default '0',
    `anlagedatum` int(11) NOT NULL default '0',
    `aktiv` int(11) NOT NULL default '0',
    `beschreibung` varchar(100) NOT NULL default '',
    PRIMARY KEY (`id`)
    ) TYPE=MyISAM AUTO_INCREMENT=8 ;

    INSERT INTO `kategorie` VALUES (1, 1, 0, 0, 1, 'Monitor');
    INSERT INTO `kategorie` VALUES (2, 1, 0, 0, 1, 'Gehäuse');
    INSERT INTO `kategorie` VALUES (3, 1, 0, 0, 1, 'Eingabegeräte');
    INSERT INTO `kategorie` VALUES (4, 2, 1, 0, 1, 'CRT');
    INSERT INTO `kategorie` VALUES (5, 2, 1, 0, 1, 'TFT');
    INSERT INTO `kategorie` VALUES (6, 1, 0, 0, 1, 'Tastatur');
    INSERT INTO `kategorie` VALUES (7, 2, 4, 0, 1, '17');

    die spalte tiefe ist die verschachtelungstiefe, die spalte zeiger zeigt auf kategorie.id

    mit folgendem codeschnipsel wollte ich nun ein menu stricken, das sich aus- und einklappt, aber es klappt nicht so, wie ich das will


    viellleicht kann mir hier einen die eingebung ins hirn nageln, wo mein denkfehler ist.

    vorab many thx

    megle

    PHP Code:
    <?

    include "zentrale/head.php";
    ?>

    </head>

    <body class="show">
    Verlinkung<br><br><br>
    <a href="abfragen.php">Abfragen</a><br><br>


    <?
     
    $aktTiefe    = $_GET[aktTiefe];
    $aktId        = $_GET[id];

    if( !isset($aktTiefe) ){
        $aktTiefe = 1;
    }

    function unterKategorie(){
        global $MySql_kategorie , $aktId , $aktTiefe;
        $neueTiefe = func_get_arg(0);
        $neueId = func_get_arg(1);
        
        if ( $aktTiefe == $neueTiefe && $aktId == $neueId ) {
            echo "abfrage<br><br>";
            $sqlbefehlunter  = "SELECT * FROM $MySql_kategorie ";
            $sqlbefehlunter    .= "WHERE zeiger = $neueId ";
            $sqlbefehlunter    .= "AND tiefe = $neueTiefe ";
            $abfrageunter    = mysql_query($sqlbefehlunter);
            $anzahlunter    = mysql_num_rows($abfrageunter);

            for( $x = 0 ; $x < $anzahlunter ; $x++ ){
                $idunter            = mysql_result( $abfrageunter , $x, "id");
                $naechsteTiefe        = mysql_result( $abfrageunter , $x, "tiefe");
                $naechsteTiefe++;
                $zeigerunter        = mysql_result( $abfrageunter , $x, "zeiger");
                $beschreibungunter    = mysql_result( $abfrageunter , $x, "beschreibung");
                
                $leerraum        = "";
                for( $l = 0 ; $l < $naechsteTiefe ; $l++ ){
                    $leerraum        = "&nbsp;&nbsp;&nbsp;";
                }
        
                print "$leerraum<a href='abfragen.php?id=" . $idunter . "&aktTiefe=" . $naechsteTiefe . "'>" . $beschreibungunter . "</a><br><br>\n\n";
                
                unterKategorie( $naechsteTiefe , $idunter );
                echo "aufruf " . $naechsteTiefe  . "<br><br>";
                
            }
        }

    }

    $sqlbefehl     = "SELECT * FROM $MySql_kategorie ";
    $sqlbefehl    .= "WHERE tiefe = 1 ";
    $sqlbefehl    .= "ORDER BY beschreibung ASC ";
    $abfrage    = mysql_query($sqlbefehl);
    $anzahl        = mysql_num_rows($abfrage);

    for( $i = 0 ; $i < $anzahl ; $i++ ){
        $id                = mysql_result( $abfrage , $i, "id");
        $naechsteTiefe    = mysql_result( $abfrage , $i, "tiefe");
        $naechsteTiefe++;
        $zeiger            = mysql_result( $abfrage , $i, "zeiger");
        $beschreibung    = mysql_result( $abfrage , $i, "beschreibung");

        $leerraum        = "";
        for( $l = 0 ; $l < $tiefe ; $l++ ){
            $leerraum        = "&nbsp;&nbsp;&nbsp;";
        }
        
        print "$leerraum<a href='abfragen.php?id=" . $id . "&aktTiefe=" . $naechsteTiefe . "'>" . $beschreibung . "</a><br><br>\n\n";

        unterKategorie( $naechsteTiefe , $id );
        echo "aufruf " . $naechsteTiefe  . "<br><br>";

    }

    print "</body>\n";
    print "</html>\n";

    ?>

  • #2
    1.) Code umbrechen!!!

    2.) Wo ist der Fehler?
    tabelle rekursiv für menubaum auslesen
    3.) such mal nach menumenu

    Comment


    • #3
      wozu speicherst du tiefe mit ab ? ergibt sich doch allein aus der tatsache wieviele eltern der knoten hat ..
      und solltest du mal das menu neu"stricken" / anordnen sind die dir nur im weg
      mfg,
      [color=#0080c0]Coragon[/color]

      Comment

      Working...
      X