Baumstruktur Automatisch

Panzer

Mitglied
Hallo Leute, ich bauche mal einen kleinen Logik-Anstoß ^^

ich möchte die OrdnerStruktur auslesen und daraus eine Baum-Darstellung machen!
Das ganze Auslesen und Ausgeben funktioniert auch schon!
Hier mal der Code:

PHP:
<html>
<head><title>PHP-BAUM</title></head>
<body>
BAUM
<?php
error_reporting(E_ALL);
$i = 0;
if($ordner ==""){
  $ordner = $_GET['ordner'];
  if($ordner ==""){
    $ordner = "GALERIEORDNER";
  }
}
if($pfad ==""){
  $pfad = $_GET['pfad'];
  if($pfad ==""){
    $pfad = "GALERIEORDNER";
  }
}
$ebene = 0;
echo "BAUM: \n";
baum($ordner,$ebene);

function baum($ordner,$ebene){
	$ebene++;
	$dir = dir($ordner);
	while(false !== ($file = $dir->read())){
	    $balken = "";
            if(("."  == $file)OR(".." == $file)) continue;
            if(is_dir($ordner."/".$file) && ($file!="thumbs")){
		for($count = 0; $count < $ebene; $count++)
		{
		$balken  = $balken."&nbsp;&nbsp;&nbsp;&nbsp;";
		}
		$balken  = $balken."\__»
";
		echo $balken;
		echo " <a href='test.php?pfad=$ordner/$file'>$file</a><br>";
		baum($ordner."/".$file,$ebene);
            }
        }    
    }
?>
</body>
</html>

Mein Problem ist das ich gerne noch Senkrechte Striche Zwischen den Ebenen haben möchte...

Photos
|
|__Urlaub
|
|__Mallorca
|
|
|__Ibiza
| |__Norden
| |
| |__Süden
|
|__Island


So sollte das ganze aussehn! :)
Hat jemand ne Idee wie ich die Struktur so wiedergeben kann bzw. wie ich die schleifen logisch aufbauen müsste!

Panzer
 
Du könntest den Baum als ungeordnete HTML-Liste auszeichnen und dann ganz einfach mit CSS formatieren.
 
Ich habs hinbekommen ^^ ... zumindest fast :P
aber ein kritischer Blick könnt nich schaden ;)

Hier ist meine gelerie.php
PHP:
<html>
<head><title>Bilder-Galerie</title></head>
<body>
<table border="2" width="100%" height="100%">
 <tr height="100">
  <td>Die Photo-Galerie</td>
 </tr>
 <tr>
  <td align="left" valign="top">
   <table border="1" height="100%">
    <td>
     <table width="200" height="100%" border="1">
      <tr>
       <td height="30">MENU</td>
      </tr>
      <tr>
       <td valign="top">
    <?php
    //error_reporting(E_ALL);
    $max = 12;
    $zeile = 4;
    $anzahl = 0;

    $ordner = $_GET['ordner'];
    $pfad = $_GET['pfad'];
    $verzeichnis = $_GET['verzeichnis'];
    $seite = $_GET['seite'];
    
    if($ordner == ""){
      $ordner = "/usr/export/www/vhosts/funnetwork/hosting/BENUTZERNAME/galerie";
    }
    if($pfad == ""){
      $pfad = "/usr/export/www/vhosts/funnetwork/hosting/BENUTZERNAME/galerie";
    }
    if($seite == 0){
      $seite = 1;
    }
    if($verzeichnis == ""){
      $verzeichnis = "/galerie";
    }
    $ebene = 0;
    echo "Server: $verzeichnis<br>";
    baum($ordner,$ebene);

    function check_thumb($path, $imagefile, $thumbfile) {      
      if(file_exists($thumbfile)) {
        return false;
      }
      if(!file_exists($path."/thumbs")){ 
        echo "Der Ordner: $path/thumbs wurde erstellt!";
        mkdir($path."/thumbs",0777);
	chmod ($path."/thumbs", 0777);
      }
      $Img = imageCreateFromJPEG($imagefile);
      $oBreite = imageSX($Img);
      $oHöhe = imageSY($Img);
  
      if($oHöhe>=200){
        $zHöhe = $oHöhe/100;
        $pHöhe = 200/$zHöhe;
        $zBreite = $oBreite/100;
        $nBreite = $pHöhe*$zBreite;
        $nHöhe = 200;
      } 
      else{
        $nBreite=$oBreite;
        $nHöhe=$oHöhe;
      }

      $Out = imageCreateTrueColor($nBreite, $nHöhe); 
      imageCopyResampled($Out, $Img, 0, 0, 0, 0, $nBreite, $nHöhe, $oBreite, $oHöhe);
      imageJPEG($Out, $thumbfile); 
      return true;     
    } 

    function baum($ordner,$ebene){
	$ebene++;
	$dir = dir($ordner);
	while(false !== ($file = $dir->read())){
	    $balken = "";
            if(("."  == $file)OR(".." == $file)) continue;
            if(is_dir($ordner."/".$file) && ($file!="thumbs")){
		for($count = 0; $count < $ebene; $count++)
		{
		$balken  = $balken."&nbsp;&nbsp;&nbsp;&nbsp;";
		}
		$balken  = $balken."|__";
		echo $balken;
		echo " <a href='galerie.php?pfad=$ordner/$file&verzeichnis=$verzeichnis&seite=0'>$file</a><br>";
		baum($ordner."/".$file,$ebene);
            }
        }    
  }
?>
       </td>
      </tr>
     </table>
    </td>
    <td width="100%">
     <table border="1" width="100%" height="100%">
      <tr>
       <td height="30">GALERIE</td>
      </tr>
	
<?php
  $files = $thumbs = array();
  $handle = opendir($pfad);
  while($file = readdir($handle)){
    if ($file != "." && $file != ".." && $file != "index_1.php") {
      if (!is_dir($pfad."/".$file )) {
        $anzahl++;
      }
    }
  }
  //closedir($pfad);
  
  if($anzahl > $max){
    $seitenmax = ceil($anzahl/$max);
  }
  else{
    $seitenmax = 1;
  }
  if($seitenmax > 1){
    echo "<tr>";
    echo "<td>";
    echo "<table height='30'>";
    echo "<tr>";
    $seite-=1;
    if($seite > 0){
      echo "<td width='100'><a href='galerie.php?seite=$seite&pfad=$pfad$file&verzeichnis=$verzeichnis'> Zurück </a></td>";
    }
    else{
      echo "<td width='100'></td>";
    }
    $seite+=1;
    echo "<td width='100'><a href='galerie.php?seite=$seite&pfad=$pfad$file&verzeichnis=$verzeichnis'> $seite </a></td>";
    $seite+=1;
    if($seite <= $seitenmax){
      echo "<td width='100'><a href='galerie.php?seite=$seite&pfad=$pfad$file&verzeichnis=$verzeichnis'> Weiter </a></td>";
    }
    else{
      echo "<td width='100'></td>";
    }
    $seite-=1;
    echo "</tr>";
    echo "</table>";
    echo "</td>";
    echo "</tr>";
  }
  
?>    

      <tr>
       <td valign="top" align="left">
        <table>
<?php

  $files = $thumbs = array();
  $handle = opendir($pfad);
  while($file = readdir($handle)){
    if ($file != "." && $file != ".." && $file != "index_1.php") {
      if (is_dir($pfad."/".$file) and ($file != "thumbs")) {
        echo "<td>$file <br><a href='galerie.php?pfad=$pfad/$file&verzeichnis=$verzeichnis&seite=0' name='$file'><img src='/galerie/thumbs/ordner.jpg'></img></a></td>\n";   
      }
      else{
        array_push($files, "$file");
      }
    }
  }
  echo "<tr>";
  $o = 0;
  $i = 0;
  foreach($files as $file) {
    $name = explode(".", $file);
    $endung = $name[count($name)-1];
    if($endung == "jpg" && $file != "ordner" && $file != "thumbs"){
      if($i<$zeile) {
        $i++;
      }
      else{
        echo "</tr><tr>";
        $i=1;
      }
      $o++;
      if($o>=($seite*$max-($max-1)) && $o<=($seite*$max)){
        $thumbfile = "$pfad/thumbs/$file.thumb";
        //echo "Pfad: $pfad \n";
        //echo "Thumb: $thumbfile \n";
        check_thumb($pfad, "$pfad/$file", $thumbfile);
        $name = explode("n4tur3", $pfad);
        $verzeichnis = $name[count($name)-1];
        //echo "Verzeichnis: $verzeichnis"; 
        echo "<td>$file Nr $i<br><a href='$verzeichnis/$file' name='$thumbfile'>
                            <img src='$verzeichnis/thumbs/$file.thumb'></img></a></td>\n";
      }
    }
    elseif($file!="thumbs" && $file != "ordner"){
      echo "<td width='200' height='200'><a href='galerie.php?pfad=$pfad/$file&seite=0' name='$thumbfile'>
                <img src='/galerie/thumbs/ordner.jpg'></img></a></td>\n";
    }
}
echo "</tr>";
?>
        </table>
       </td>
      </tr>
     </table>
    </td>
   </table>
  </td>
 <tr>
 </tr>
 <tr>
  <td height="100">
   <table>
    <tr>
     <td>Bild hinzufügen:</td>
    </tr>
    <tr>
     <td>
<?php
  echo "<form enctype='multipart/form-data' action='upload.php?pfad=$pfad' method='post'>";
  echo "<input type='hidden' name='MAX_FILE_SIZE' value='300000'>";
  echo "<input type='hidden' name='ordner' value='$pfad'>";
  echo "Bild: <input name='userfile' type='file'>";
  echo "<input type='submit' value='Bild Hochladen!'>";
  echo "</form>";
?>
     </td>
    </tr>
   </table>
  </td>
 </tr>
</table>
</body>
</html>

Hier ist noch die upload.php

PHP:
<html>
<head><title>Bilderupload-Script</title></head>
<body>
<table border="2" width="100%" height="100%">
 <tr>
  <td>Upload</td>
 </tr>
 <tr>
  <td>
<?php
  error_reporting(E_ALL);
  if(!isset($_FILES['userfile']['pfad'])){
    $uploaddir = $pfad;
  }
  echo "Upload-Verzeichnis: $uploaddir <br>";
  $uploaddatei = $_FILES['userfile']['name'];
  $tempname = $_FILES['userfile']['tmp_name'];
  $dateityp = $_FILES['userfile']['type'];
  if(!isset($_FILES['userfile']['name'])){
    echo "Es wurde kein Dateiname übergeben! <br>";
  }
  echo "Dateiname: $uploaddatei <br>";
  //echo "Temp-Name: $tempname <br>";
  echo "Dateityp: $dateityp <br>";
  if(chmod ($uploaddir, 0777)){
    //echo "Rechte wurden auf $uploaddir gesetzt! <br>";
  }
  if ($_FILES['userfile']['type'] =="image/pjpeg"){
    if(move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir."/".$uploaddatei) && file_exists($uploaddir."/".$uploaddatei)){
      echo "Datei: $uploaddatei wurde erfolgreich in den Ordner: $uploaddir gespeichert! <br>";
    }
    else{
      echo "Folgender Fehler ist aufgetreten: <br><br>";
      switch($_FILES['userfile']['error']){
        case 1: echo "Die Datei $uploaddatei überschreitet die von PHP festgelegte grösse!<br>";
                break;
        case 2: echo "Die Datei $uploaddatei überschreitet die vom Formular festgelegte grösse!<br>";
                break;
        case 3: echo "Die Datei $uploaddatei konnte nur zum Teil hoch geladen werden!<br>";
                break;
        case 4: echo "Die Datei $uploaddatei konnte nicht hoch geladen werden!<br>";
                break;
        case 6: echo "Das angegebene Temp-Verzeichnis existiert nicht!<br>";
                break;
        default: echo "Es wurde ein unbekannter Fehler festgestellt!<br>";
                break;
      }
    }
  }
  else{
    echo "Die angegebene Datei hat nicht das Format .jpg oder .jpeg <br>";
  }
  echo "<a href='galerie.php?pfad=$pfad'>Zurück</a>";
?>
  </td>
 </tr>
</table>
</body>
</html>
Bei Probe läufen hat alles soweit funktioniert aber ich denke das man das Script noch ein bischen vereinfachen kann! Ausserdem will der Datei-Upload noch nicht so richtig!! Sprich er zeigt keinen Fehler an läd die Datei aber auch nicht hoch ;)
Danke im vorraus für Anregungen und Kritik
 
Zuletzt bearbeitet:
Zurück