php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.11.2009, 15:39  
Benutzer
 
Registriert seit: 16.10.2009
Beiträge: 56
PHP-Kenntnisse:
Anfänger
Das_Pfau befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Ordnerstruktur und Inhalte anzeigen

Guten Tag,

ich versuche mit folgendem Script mir eine Ordnerstruktur, mit Über- und Unterordnern und allen enthaltenen Datein anzuzeigen. Dieses wollte ich möglichst ähnlich dem Dateiexplorer darstellen.

PHP-Code:
function dateiablage($pfad$id){
$do opendir($pfad);
while (
false !== ($file readdir($do))){
    if (!
preg_match("/^\.{1,2}$/",$file)) {
        if(
is_dir($pfad.$file)){
            
$pfad $pfad.$file;
            
dateiablage($pfad$id);
        }else{
        
$file_data[$id] ="<a href=\"$pfad/$file\">$file</a>";        
            
$id++;            
        }
        
    }
    
}
closedir($do); 
Das Array übergebe ich dann dem Template. Problem hier ist nur, dass ich hier nur die Datein des letzten Unterordners angezeigt bekomme. Ich hatte das eigentlich so verstanden, dass jede Datei ins Array geschrieben wird. Aber das Array beinhaltet nur die Datein des letzen Ordners. Wo ist da mein Denkfehler?? Kann mir wer nen Tipp geben??
Gruß
V

Geändert von Das_Pfau (30.11.2009 um 17:17 Uhr).
Das_Pfau ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.11.2009, 15:43  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Du gibst ja auch nichts zurück. Also wird das Array bei jedem Aufruf der Funktion wieder leer erstellt.
__________________
Gruss
L
lazydog ist offline  
Alt 30.11.2009, 16:11  
Benutzer
 
Registriert seit: 16.10.2009
Beiträge: 56
PHP-Kenntnisse:
Anfänger
Das_Pfau befindet sich auf einem aufstrebenden Ast
Standard

stimmt das war blöd ^^
Das_Pfau ist offline  
Alt 30.11.2009, 16:27  
Benutzer
 
Registriert seit: 16.10.2009
Beiträge: 56
PHP-Kenntnisse:
Anfänger
Das_Pfau befindet sich auf einem aufstrebenden Ast
Standard

Hmm ne Frage habe ich da aber dennoch. Wie baue ich denn die Ordnerstruktur auf, dass die Datein auch den Ordnern zugeordnet werden und den Unterordner den Oberordnern. Momentan habe ich das so, dass mir alle Datein untereinander nach dem Alphabet sotiert und am Ende die Ordner angezeigt werden.
Hier der aktuelle Code:

PHP-Code:
function ablage_show($pfad$id$file_data){
$do opendir($pfad);
    while (
false !== ($file readdir($do))){
        if (!
preg_match("/^\.{1,2}$/",$file)) {
            if(
is_dir($pfad.$file)){
                
$pfad $pfad.$file;
                
$file_data[$id] = $file;
                
$id++;
                
ablage_show($pfad$id ,$file_data);
            }else{
                
$file_data[$id] ="<a href=\"$pfad/$file\">$file</a>";                
            }
            
$id++;
        }
        
    }
closedir($do);
return 
$file_data;

Das_Pfau ist offline  
Alt 01.12.2009, 09:48  
Benutzer
 
Registriert seit: 16.10.2009
Beiträge: 56
PHP-Kenntnisse:
Anfänger
Das_Pfau befindet sich auf einem aufstrebenden Ast
Standard

Ich muss mich korrigieren. Der letzte Quellcode gibt mir nur die Datein des Oberordners an und den Namen des ersten Unterordners an. Er geht nicht die anderen Unterordner durch.
Nach dem ersten rekursiven Ausdruck geht er scheinbar nicht mehr in die While-Schleife hinein. Ich weiß aber leider nicht wieso
Erkennt ihr was ich falsch gemacht habe??
Gruß
V
Das_Pfau ist offline  
Alt 01.12.2009, 11:20  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Wieso weist du denn $pfad einen neuen Wert zu? Dadurch hast du beim zweiten File deinen ursprünglichen Pfad verfälscht und ab da geht alles schief.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 01.12.2009, 13:05  
Benutzer
 
Registriert seit: 16.10.2009
Beiträge: 56
PHP-Kenntnisse:
Anfänger
Das_Pfau befindet sich auf einem aufstrebenden Ast
Standard

Der Gedanke dabei war, dass sich der Pfad doch ändert, wenn ich in einen Unterordner gehe, deswegen habe ich diesen Pfad angegeben und überschrieben. Oder habe ich da was falsch verstanden?

Wenn ich die Zeile rausnehme, dann kriege ich folgende Fehlermeldung:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 35 bytes)


Vielleicht gehe ich die Sache auch generell falsch an. Wenn das klappt dass mir alle Datein zu den Ordnern passend und die Unterordner zu den Oberordner passend zugeordnet werden, wollte ich diese Struktur in einem Array abbilden und dann an ein Template übergeben. Ich bin mir sicher ob das der besten Weg ist, eine Ordnerstruktur mit deren Inhalten abzubilden.

Gruß
V
PS: Muss ich die Error-Message auch irgendner Formatierung verpassen?? Hab da nichts wirklich passendes gefunden.
Das_Pfau ist offline  
Alt 01.12.2009, 13:19  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Du musst schon auch bei dem Aufruf der Funktion, also der Rekursion dafür sorgen, dass der neue tiefe Pfad übergeben wird. Also:
PHP-Code:
function ablage_show($pfad$id$file_data){ 
$do opendir($pfad); 
    while (
false !== ($file readdir($do))){ 
        if (!
preg_match("/^\.{1,2}$/",$file)) { 
            if(
is_dir($pfad.$file)){ 
                
// Diese Zeile also rausnehmen
                // $pfad = $pfad.$file;
                
$file_data[$id] = $file
                
$id++; 
                
// Hier beim Aufruf den tiefen Pfad übergeben
                // ablage_show($pfad, $id ,$file_data); 
                
ablage_show($pfad $file$id ,$file_data); 
            }else{ 
                
$file_data[$id] ="<a href=\"$pfad/$file\">$file</a>";                 
            } 
            
$id++; 
        } 
         
    } 
closedir($do); 
return 
$file_data

Im übrigen. Wenn du ein Array übergibst und manipulierst, wenn du eine Zählvariable manipulierst, dann übergebe sie als Referenz (call by reference). Schaue im Handbuch/Google, was das bedeutet.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 01.12.2009, 13:21  
Benutzer
 
Registriert seit: 16.10.2009
Beiträge: 56
PHP-Kenntnisse:
Anfänger
Das_Pfau befindet sich auf einem aufstrebenden Ast
Standard

ähm, aber dann läuft es doch genau auf das selbe hinaus. Es ist meinetwegen eleganter gelöst, weil ich ne Zeile spare. Ob ich den Wert vorher setzte oder bei der Übergabe der Parameter ist doch genau das selbe vom Prinzip.
Es ändert auch nichts an der aktuellen Problematik..
Gruß
V
Das_Pfau ist offline  
Alt 01.12.2009, 13:34  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Nein, läuft es nicht. Vergleiche dein Ursprungsscript mit dem anderen. Innerhalb deiner While-Schleife hattest du $pfad überschrieben. Sobald damit die zweite Datei kommt (die Schleife also zweimal ausgeführt wird), hast du plötzlich einen völlig anderen Pfad und dadurch funktioniert es nicht mehr.
Du kannst den Wert vorher setzen, da spricht nichts dagegen, aber nicht in eine Variable, die du hinterher mit dem ursprünglichen Wert noch brauchst. Setze es meinetwegen in $pfad2. Aber nicht in $pfad...
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
ZIP entpacken und Ordnerstruktur übernehmen webproger PHP Tipps 2009 4 26.07.2009 15:46
Ordnerstruktur auf Homepage sichtbar st0ny Off-Topic Diskussionen 11 08.12.2008 12:42
Ordnerstruktur aus Webverzeichnis ausgeben ? Blamaster PHP Tipps 2008 11 08.10.2008 15:09
CakePHP Ordnerstruktur Luka PHP Tipps 2008 1 23.11.2007 18:06
Ordnerstruktur alphabetisch sortiert als XML ausgeben lindner PHP Tipps 2008 7 15.10.2007 18:50
Ordnerstruktur aus mySQL lesen GSJLink PHP Tipps 2006 13 04.11.2006 01:23
Ordnerstruktur "sortieren" ChristianFe PHP-Fortgeschrittene 5 22.08.2006 16:16
ordnerstruktur auf webseite anzeigen PHP Tipps 2006 8 29.01.2006 17:39
Ordnerstruktur -> mehrdim. Array (rekursives Durchsuchen) PHP-Fortgeschrittene 4 26.03.2005 11:43

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php ordnerstruktur abbilden, php ordnerstruktur anzeigen, php ordner struktur, ordnerbaum ausgeben, website ordnerstruktur anzeigen, ordnerstruktur darstellen, ordnerstruktur anzeigen, ordnerstruktur auflisten, php ordnerstruktur, ordnerstruktur aufzeigen, php array struktur ausgeben, ordnerstruktur ausgeben, verzeichnisstruktur und inhalt darstellen, php file struktur durchsuchen, alle unterordner einer url anzeigen, php array ausgeben aus ordner, aufzeigen der ordnerstruktur, ordnerstruktur und deren inhalt anzeigen, struktur einer seite anzeigen, ordnerstruktur einer webseite anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum