phpbar.de logo

Mailinglisten-Archive

[php] PHP-Tree

[php] PHP-Tree

=?iso-8859-1?Q?Bj=F6rn_Schotte?= bjoern_(at)_baer.mayn.de
Thu, 16 Dec 1999 09:46:48 +0100


Hi,

> PHP-Tree ist *fast* genau das, was ich seit langem suche. Ich kapiere
> einfach nicht, wie eine rekursive Funktion funktionieren kann, die
> einzelne Nodes (ist das Wort an dieser Stelle richtig?), die eine
> unique id und einen Zeiger auf den parent haben, korrekt (und auch
> eine Gruppe von children alphabetisch sortiert) als Baum in HTML
> ausgibt - <aufheul> bin schon am verzweifeln </aufheul>.

<?

# Funktion für showbaum
#
# Macht $anz Linien nebeneinander.
#
function makelinie($anz) {
  for ($i=0; $i<=$anz; $i++) { echo "<IMG ALIGN=top SRC=\"/admin/e_linie.gif\" WIDTH=20 HEIGHT=16 ALT=\"\">"; }
}

# Zeigt die Baumstruktur mit Bereichen/Seiten rekursiv an.
# Hierbei ist eine beliebige Tiefe für die Bereiche möglich.
#
function showbaum($mybid) {
  GLOBAL $zaehler,$mybaum;
  $query="SELECT * FROM bereich WHERE oberbereich='$mybid' ORDER BY bereichsname";
  if ($result=mysql_query($query)) {
    while ($row=mysql_fetch_array($result)) {
      $name=$row[bereichsname]; $berid=$row[b_id]; $boid=$row[oberbereich];
      $name=eregi_replace(" ","&nbsp;",$name);
      if ($zaehler>0) {
        makelinie($zaehler-1);
      }
      echo "<IMG ALIGN=top SRC=\"e_t-stueck.gif\" WIDTH=20 HEIGHT=16 ALT=\"\">";
      echo "<A HREF=\"links.php3?bid=$berid\"><IMG ALIGN=top SRC=\"e_verzeichnis.gif\" WIDTH=20 HEIGHT=16 border=0 ALT=\"\">$name</A>&nbsp;";
      echo "[<A HREF=\"bereich.php3?option=neu&oid=$berid\" target=\"rechts\">N</A>]";
      echo "[<A HREF=\"bereich.php3?option=cha&id=$berid&oid=$boid\" target=\"rechts\">E</A>]";      
      echo "[<A HREF=\"bereich_del.php3?oid=$berid\" target=\"rechts\">D</A>]";
      echo "<BR>\n";
      
      # Seiten zum Bereich anzeigen
      #
      if (($zaehler<count($mybaum)) && $mybaum[$zaehler]==$berid) {
        $myres=mysql_query("SELECT * FROM seite WHERE bereich='$berid' order by dateiname");
        while ($myrow=mysql_fetch_array($myres)) {
          #if ($zaehler>0) {
            makelinie($zaehler);
          #}
          echo "<IMG ALIGN=top src=\"e_t-stueck.gif\" width=20 height=16 alt=\"\">&nbsp;&nbsp;";
          $hf=$myrow[dateiname];
          if ($hf=="") { $hf="kein Dateiname!!"; }
          echo "<b><a href=\"seite.php3?option=edit&id=$myrow[sid]\" target=\"rechts\">$hf</a></b>";
          if ($hf!="") {
            $hbereich=$myrow[bereich];
            $vz=bastel_serververzeichnis($hbereich);
            $url=$vz.$hf;
            echo "&nbsp;[<a href=\"/$url\" target=\"_blank\">S</a>]";
          }
          echo "<br>\n";
        }
        makelinie($zaehler);
        echo "<IMG ALIGN=top src=\"e_t-stueck.gif\" width=20 height=16 alt=\"\">&nbsp;&nbsp;";
        echo "<a href=\"seite.php3?option=neu&oid=$berid\" target=\"rechts\">Neue Seite</a><br>\n";
      }
      #
      # Anzeigeende

      if (($zaehler<count($mybaum)) && $mybaum[$zaehler]==$berid) { $zaehler++; showbaum($berid); $zaehler--; }
    }
  }
}

?>

Restliche Implementation ist Hausaufgabe. Aufgerufen wird die Funktion
mit dem Parameter "0".
-- 
Björn Schotte                                09364/810492
PHP-Center                 -> <http://www.php-center.de/>


php::bar PHP Wiki   -   Listenarchive