Portal > Foren > PHP > PHP-Programmierung > Verzeichnisse rekursiv anlegen
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 05.02.2006, 22:02 Nach oben    #1
Benutzer
 
Registriert seit: 28.12.2005
Beiträge: 35
Standard Verzeichnisse rekursiv anlegen

Hallo zusammen,

ich hab' mal wieder ein Problem und hoffe auf Eure Hilfe. Leider steh ich grad etwas auf'm Schlauch und seh offenbar den Wald vor lauter Bäumen nicht

Folgende Situation:

/files/uploads

ist mein vorhandenes Basisverzeichnis für Uploads. Nun möchte ich unter Vorgabe des Zielfpades der z.B. so aussehen könnte:

/files/uploads/u-1342/g-34534/a-1231

automatisch alle noch nicht vorhandenen Verzeichnisse angelegt werden.

Sprich das script müsste erst prüfen ob es -1342 schon gibt, wenn nicht: anlegen, dann g-34534 usw.

Ich hab mich schon etwas umgeschaut aber bisher nicht's "einfaches" dafür gefunden. Eigentlich habe ich ja auf eine fertige Klasse/Funktion gehofft, aber wie gesagt bisher nichts gefunden.

Weiß evtl. jemand Rat?

Danke!
lokari ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.02.2006, 22:09 Nach oben    #2
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 965
Standard

PHP-Code:
function mkdirs($dir$mode FS_RIGHTS_D) {
 
$stack = array(basename($dir));
 
$path null;
 while ( (
$d dirname($dir) ) ) {
     if ( !
is_dir($d) ) {
         
$stack[] = basename($d);
         
$dir $d;
     } else {
         
$path $d;
         break;
     }
 }

 if ( ( 
$path realpath($path) ) === false )
     return 
false;
 
 
$created = array();
 for ( 
$n count($stack) - 1$n >= 0$n-- ) {
     
$s $path '/'$stack[$n];                                     
     if ( !
mkdir($s$mode) ) {
         for ( 
$m count($created) - 1$m >= 0$m-- )
             
rmdir($created[$m]);
         return 
false;
     }
     
$created[] = $s;     
     
$path $s;
 }
 return 
true;

Aus den Manpages zu mkdir().
Lars ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.02.2006, 22:15 Nach oben    #3
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 460
Standard

Mit is_dir() könntest du das machen:

PHP-Code:
if ( is_dir('files/uploads/u-1342') ) // ...
if ( is_dir('files/uploads/u-1342/g-34534') ) // ...
if ( is_dir('files/uploads/u-1342/g-34534/a-1231') ) // ... 
Da kann man natürlich noch entsprechende Dynamik reinbringen.
__________________
Corvin ist gerade online  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.02.2006, 22:31 Nach oben    #4
Benutzer
 
Benutzerbild von niklasboelter
 
Registriert seit: 22.01.2006
Beiträge: 31
Standard

Zitat:
Zitat von php.net
bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )
warum nicht einfach recursive auf true setzen? damit wuerdest du dir die ganze arbeit ersparen
__________________
PHP-Code:
$x[] =& $x;
$x == $x
niklasboelter ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.02.2006, 22:35 Nach oben    #5
Benutzer
 
Registriert seit: 28.12.2005
Beiträge: 35
Standard

hallo zusammen,

erstmal danke für die schnellen antworten. Ich hab grad' gesehen, dass es aber php5 den recursive-mode gibt und werde das gleich mal testen.

danke einstweilen.

EDIT: Funktioniert 1a - danke für den Tipp

für die Akten:
PHP-Code:
$path "/my/path/to/the/target";
mkdir($path0777true); 

Geändert von lokari (05.02.2006 um 22:39 Uhr)
lokari ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.02.2006, 22:49 Nach oben    #6
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 965
Standard

Muss mal miene Manpages aktualisieren, bei mir gibts nur $dirname und $mode.
Lars ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.02.2006, 23:20 Nach oben    #7
Jay
Gast
 
Beiträge: n/a
Standard

@Lars

In der deutschen Version des php Manuals sieht mkdir so aus:
Zitat:
int mkdir ( string pathname [, int mode] )
In der englischen dagegen so
bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )
in der spanischen Verison ist auch alles aktualisiert worden.

Da hat wohl wer auf die deutsche Version vergessen.
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.02.2006, 04:48 Nach oben    #8
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.547
Standard

Wer nutzt auch die englische Version?
Jetzt kommt mir net mit "ich kann nicht so gut englisch" .. papperlapp!
Wenn man etwas nicht versteht .. kurz ins deutsche Manual schauen und gut ist.

Fazit: Selbst Schuld.
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.02.2006, 09:21 Nach oben    #9
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 965
Standard

Wenns nur Englisch gibt, nehm ich damit auch gerne vorlieb :>
Lars ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.03.2008, 00:11 Nach oben    #10
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.464
Standard

Ich bin gerade zufällig über diesen thread gestolpert....

Interessanterweise muss ich einfach mal festhalten, dass der Parameter um den es hier in der Diskussion geht, in der der deutschen Version noch immer keinerlei Erwähnung findet.
Das ist mal echt schade! Immerhin ist das rund 2 Jahre schon so.
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.03.2008, 01:48 Nach oben    #11
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 867
Standard

…dann sach doch auch mal was!

http://bugs.php.net/bug.php?id=44307

BTW wurde dieser Bug auch noch nicht gefixed: http://bugs.php.net/bug.php?id=37170

Ansonsten kann ich nur Ben beipflichten. Die deutsche Übersetzung ist seit je her schwer hinterher und voller Fehler. Einfach englisch als Standardsprache im Browser einstellen, dann klappts auch weiter mit php.net/funktionsname. Ich glaub, mit den Cookies gabs da immer Probleme.

Basti

Geändert von Basti (02.03.2008 um 01:51 Uhr)
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.03.2008, 02:15 Nach oben    #12
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.464
Standard

Ich wusste nicht, dass man auch dafür ein ticket anlegen kann. Ich hätte das nicht als einen bug bezeichnet...
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.03.2008, 02:39 Nach oben    #13
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 867
Standard

Zitat:
Zitat von Jann Hendrik Beitrag anzeigen
Ich hätte das nicht als einen bug bezeichnet...
Als feature request? Ist doch ganz klar ein Fehler in der Dokumentation. Zumindest der Rückgabewert. Die fehlenden Parameter eben mehr im wörtlich Sinn von „Fehler“.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.03.2008, 10:21 Nach oben    #14
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.464
Standard

ups - der falsche Rückgabewert war mir gar nicht aufgefallen...

Nunja - beim nächsten Mal weiß ich, wo ich derartiges dann hinterlasse.
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Verzeichnisse aus Eclipse-Projekt herausnehmen, im Verzeichnis sollen sie existieren Ben Eclipse 6 30.08.2007 14:36
Auf einem Server Dateien anlegen la-finest Allgemeine Java-Programmierung 5 20.04.2007 12:56
Modulo10 rekursiv dsxs PHP-Programmierung 7 18.04.2007 18:37
mod_rewrite: Subdomains auf Verzeichnisse umleiten Lars Tools, Server, Betriebssysteme 5 29.05.2006 23:30
Wie Tabellen anlegen? lycoos PEAR, PECL und Frameworks 8 13.04.2006 16:14


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45