phpbar.de logo

Mailinglisten-Archive

[php] Denksportaufgabe :)

[php] Denksportaufgabe :)

Björn Schotte php_(at)_phpcenter.de
Sat, 28 Jul 2001 20:16:58 +0200


* Marcel Beerta wrote:
> Ich habe so aber das Problem, dass ich nur maximal 2 Menütiefen habe. Ich 
> hätte aber gern n menüebenen. So hab ich's momentan auch gelöst, aber 
> rekursiv wär's mir lieber :)

Funktion traverse, die als Parameter die Startebene
übergeben bekommt (also 0, weil select * from tbl
where parent=0 gibt dir alle Elemente der ersten
Ebene) plus eine Variable, an die es ein neues Array-
Element anhängen soll. Diese gehst du in einer while-Schleife durch
und baust jedes Mal ein neues Array-Element mit einer
ID für Menu3 und dem Titel.

Danach machst du -- innerhalb der while-schleife --
ein neues select, diesmal

  select * from tbl where parent=<id des aktuellen datensatzes>

d.h. "Hat dieser Datensatz noch Unterelemente?".
Wenn ja, rufst du die Funktion traverse erneut
auf, allerdings als ID-Parameter die id des
aktuellen Datensatzes und als Variable einfach

  $var["sub"]

D.h. ungefähr so:

  function traverse($parentcheck, &$var) {
    -> select * from tbl where parent=$parentcheck
    while ( -- ) {
      $id = id von oberem select
      $tmparr = array("title" => titelausdb,
                      "url" => urlausdb);
      
      -> select count(*) as anz from tbl where parent=$id
      
      if ($diesesanz > 0) {
        $tmparr["sub"] = array();
        $var["eindeutigeID"] = $tmparr;
        traverse($id, $var["eindeutigeID"]["sub"]);
      } else {
        $var["eindeutigeID"] = $tmparr;
      }
    }
  }
  
  $menubaum = array();
  traverse(0,$menubaum);
  
Sollte funktionieren, kann aber auch sein, dass es
Fehler enthält, ist nur schnell dahingewurschtelt.

-- 
PHP Schulungen und                        | International PHP Conference
Schulungsmaterial:                        |             05. - 07.11.2001
http://thinkphp.de/                       |      Astron Hotel, Frankfurt
http://rent-a-phpwizard.de/schulungen.php |  http://www.php-kongress.de/


php::bar PHP Wiki   -   Listenarchive