Baumstruktur rückwärts auslesen

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

  • Baumstruktur rückwärts auslesen

    Hallo, Forumgemeinde,

    irgendwie drehen sich die Gedanken im Kreis und ich sehe den Wald vor lauter Bäumen nicht mehr. Ich lege in einem Formular eine Baumstruktur an, aus der später ein Klappmenu werden soll. Hierbei soll nach Klick die jeweilige Unterkategorie ausgeklapt, bzw. eingeklappt werden. Bis zur 2. Ebene funktioniert es ja auch, in dem ich einfach in der kategorie_parent_child tabelle nach den Einträgen suche, wo die parentid übereinstimmt. aber es funktioniert ebend nur über 2 Ebenen. Das Menu kann aber n-fach verschachtelt sein. Habt Ihr da irgendwo einen Lösungsansatz?

    Hier der Script zum anlegen.
    PHP-Code:
    <?php

    /*
     ToDo
     
     */
     
    include "../../zentrale/head.php";
    include 
    "../../zentrale/tabellen.php";
    include 
    "../../zentrale/comein.php";
    ?>
    <link rel="stylesheet" type="text/css" href="../../zentrale/admin.css">

    </head>

    <body class="show">

    Kategorie Einfügen<br>

    <?php

    $id                
    $_POST[id];
    $kategorie        $_POST[kategorie];
    $kategorieId    $_POST[kategorieId];
    $bild            $_POST[bild];

    $anlegen        $_POST[anlegen];

    if ( isset( 
    $anlegen ) ){
        
        
    $sqlbefehl "INSERT INTO $MySql_kategorie ";
        
    $sqlbefehl .="( beschreibung ) ";
        
    $sqlbefehl .="VALUES  ";
        
    $sqlbefehl .="( '$kategorie' ) ";

        
    mysql_query($sqlbefehl) or die("Error:"mysql_error());
        
        
    $kategorie mysql_insert_id();

        
    $sqlbefehl "INSERT INTO $MySql_kategorie_parent_child ";
        
    $sqlbefehl .="( parent, kategorie ) ";
        
    $sqlbefehl .="VALUES  ";
        
    $sqlbefehl .="( $kategorieId$kategorie ) ";

        
    mysql_query($sqlbefehl) or die("Error:"mysql_error());

    }

        
    $aktTiefe 1;
        
        function 
    einruecken$tiefe ) {
            
    $leerRaum "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
            for( 
    $i $i $tiefe $i++ ){
                
    $einrueckung $einrueckung $leerRaum;
            }
            return 
    $einrueckung;
        }
        
        function 
    kindSuchen$parent ){
            global 
    $sqlhandle$MySql_kategorie$MySql_kategorie_parent_child$aktTiefe
    $kategorieTabelle;
            
            
    $aktTiefe++;
            
            
    $sqlbefehlKategorieChild      "SELECT $MySql_kategorie.* FROM $MySql_kategorie";
            
    $sqlbefehlKategorieChild      .= " LEFT JOIN $MySql_kategorie_parent_child ON 
    $MySql_kategorie.id = $MySql_kategorie_parent_child.id";
            
    $sqlbefehlKategorieChild      .= " WHERE $MySql_kategorie_parent_child.parent 
    $parent";
            
    $sqlbefehlKategorieChild      .= " ORDER BY $MySql_kategorie.beschreibung ASC ";
            
    $abfrageKategorieChild        mysql_query($sqlbefehlKategorieChild);

            if( 
    mysql_num_rows($abfrageKategorieChild) > ){
                
                for( 
    $i $i mysql_num_rows$abfrageKategorieChild ) ; $i++ ){
                    
    $id             mysql_result$abfrageKategorieChild $i"id");
                    
    $beschreibung    mysql_result$abfrageKategorieChild $i"beschreibung");
                    
                    
    $tiefe einruecken$aktTiefe );
                    print 
    "   <tr align='LEFT' valign='TOP'>\n";
                    print 
    "      <td><input type='radio' name='kategorieId' value='$id'></td>\n";
                    print 
    "      <td colspan='2'>" $tiefe $beschreibung "</td>\n";
                    print 
    "   </tr>\n";
                    
                    
    $kategorieTabelle->tabellenLeereZeile);
                    
                    
    kindSuchen$id );
                    
                }
            }
            
            
    $aktTiefe--;
        }
        
        
    $kategorieTabelle = new htmlTabelle"LEFT" "TOP" "" "" ,"false" "Kategorie" 
    "Button" 25 "Leerraum" 10 "Text" 400  );
        

        
    $kategorieTabelle->tabellenLeereZeile);
        
        print 
    "   <form name='Neuanlegen' action='einfuegen.php' method='post' 
    enctype='multipart/form-data'>\n"
    ;
        
        
    $kategorieTabelle->tabellenLeereZeile);
        
    $kategorieTabelle->tabellenLinie();
        
    $kategorieTabelle->tabellenLeereZeile);
        
        print 
    "   <tr align='LEFT' valign='TOP'>\n";
        print 
    "      <td colspan='3'>Bitte wählen Sie, an welchem Platz die neue Kategorie 
    angeordnet werden soll.</td>\n"
    ;
        print 
    "   </tr>\n";
        
        
    $kategorieTabelle->tabellenLeereZeile);
        
    $kategorieTabelle->tabellenLinie();
        
    $kategorieTabelle->tabellenLeereZeile);
        
        print 
    "   <tr align='LEFT' valign='TOP'>\n";
        print 
    "      <td><input type='radio' name='kategorieId' value='0' checked></td>\n";
        print 
    "      <td colspan='2'>Hauptkategorie</td>\n";
        print 
    "   </tr>\n";
        
        
    $kategorieTabelle->tabellenLeereZeile);
        
        
    /*
         Tabelle Kategorie rekursiv auslesen    
         */
         
        
    kindSuchen);
        
        
    $kategorieTabelle->tabellenLeereZeile);
        
    $kategorieTabelle->tabellenLinie();
        
    $kategorieTabelle->tabellenLeereZeile);
        
        print 
    "   <tr align='LEFT' valign='TOP'>\n";
        print 
    "      <td>Kategorie:</td>\n";
        print 
    "      <td><img src='../../images/transparent.gif' width='1' height='1'></td>\n";
        print 
    "      <td><input type='text' name='kategorie' size='40' maxlength='50' 
    class='eingabe_input' value='" 
    $artikelnummer  ."'></td>\n";
        print 
    "   </tr>\n";
        
        
    $kategorieTabelle->tabellenLeereZeile);
        
    $kategorieTabelle->tabellenLinie();
        
    $kategorieTabelle->tabellenLeereZeile);
        
        print 
    "   <tr align='LEFT' valign='TOP'>\n";
        print 
    "      <td><img src='../../images/transparent.gif' width='1' height='1'></td>\n";
        print 
    "      <td colspan='2'><input type='submit' name='anlegen' value='Neu anlegen' 
    class='eingabe_input'></td>\n"
    ;
        print 
    "   </tr>\n";

        print 
    "</form>";
        
        
    $kategorieTabelle->tabellenFuss();

    print 
    "</body>\n";
    print 
    "</html>\n";
    ?>
    Zeilenumbrüche eingefügt
    Zuletzt geändert von tashideleg; 01.04.2005, 15:41.

  • #2
    Welcome on Board,

    nicht umsonst haben wir diesen Thread als wichtig markiert und mit "Erst lesen" betitelt. Bitte besonders den bereich mit den Scollbalken beachten!

    Kommentar


    • #3
      Sieht besser aus. Danke!

      Mein Lösungsansatz wäre rekursion.

      Kommentar

      Lädt...
      X