Problem mit einer Funktion
Also nach dem des was ich bisher gemacht hat nur mist ausgibt hab ich mich dazu überwunden eine rekursive Funktion zu schreiben allerdings versteh ichs nicht so richtig. Hab bisher das:
PHP-Code:
Des weiteren versteh ich nicht so richtig von was ich die Funktion abhängig machen muss also von $nlist oder $nlist[i] oder was anderes? Es soll jedes Verzeichnis durchlaufen werden. Wie ruf ich die Funktion aus meinem Haupcode aus? Geht das so? rekursiv($nlist); oder muss ich davor $nlist noch Hauptcode definieren oder reicht das aus? Mfg Markus |
Ich kenn mich mit den FTP-Befehlen nicht aus. Aber vielleicht kann ich dir ein paar Hinweise geben:
Wenn du die Funktion mit dem Argument $nlist aufrufst, und dann das Argumant in der ersten Zeile der Funktion wieder überschreibst, kannst du es auch ganz weglassen. Das ist wohl nicht gemeint, das Argument $ordner müsste irgendwie der aktuelle Verzeichnisname sein. Dahin müsstest du dann in der ersten Zeile chdir($ordner) machen. Nach dem rekursiven Aufruf der Funktion rekursiv($ordner . "/". $unterordner); oder so ähnlich, wirst du wahrscheinlich nochmal chdir($ordner) machen, da die ftp-Funktionen sich nicht merken, in welcher Rekursionsebene deines Programms sie sind. Der Fehler den du kriegst, dürfte das fehlende Semikolon in der Zeile vor rekursiv($nlist) sein. Am besten gibst du hier immer auch an, was für eine Fehlermeldung ausgegeben wird, anstatt Ich bekomm ne Fehlermeldung wenn ich die Datei aufruf für die Zeile: "rekursiv($nlist);" Dann kann man dir schneller helfen. GG |
Du meinst also ich sollte das vom Pfad und den Unterverzeichnis abhängig machen also so inetwa
PHP-Code:
PHP-Code:
Nochwas ich habs jetzt mal abgeändert und gespeichert aber bekomm für die function rekursiv($ordner."/".$unterordner) ne Fehlermeldung. '/' geht auch nicht also ich denk mal das ich den / weglassen muss aber das wäre ja denk ich mal nicht so schlimm. Mfg Markus |
Die Definition der Funktion soll nur eine Variable annehmen.
PHP-Code:
Wie du globale Variablen ansprichst musst du noch mal nachsehen, weiß nicht, ob das mit global $open so klappt. Außerdem müssen die übrigen Variablen $benutzername:$passwort@$servername usw. ja auch global sein. Aufruf aus dem Hauptprogramm mit rekursiv("/das/ist/mein/Pfad"); GG |
Ups was mach ich denn, bin ich jetzt total bescheuert?
Bitte sagt nicht Ja ;) PHP-Code:
Die Variablen benutzername usw. sind im Hauptcode so benannt: PHP-Code:
PHP-Code:
Ich hab rekursiv($ordner); schon mal mit // weggemacht aber selbst dann sagt er mir für die Zeile ein parse error aus Des gibts doch nicht Mfg Markus |
bei fopen fehlt das Komma.
Wenn du das so machen willst (mit ftp_pwd) brauchst du wahrscheinlich gar keinen Parameter. Also ist der Aufruf und die Deklaration rekursiv(); Du musst dann nur im Hauptprogramm in das richtige ftp-Verzeichnis gehen. Und dann entweder PHP-Code:
ganz am Ende deiner Funktion. GG |
"Du musst dann nur im Hauptprogramm in das richtige ftp-Verzeichnis gehen. "
Ich will eigentlich aus dem root Verzeichnis alle Dateien und Unterverzeichnisse samt den dort enthaltenen Dateien alle auslesen. Deshalb hab ich zumindest gedacht das ich das vom Pfad in dem ich bin abhängig machen muss. Eigentlich ist es so gedach das sich die Funktion aufteilt also | ("|" ist das root) | |--Hauptverzeichnis 1 | |- Datei 1.1 | |- Datei 1.2 | | |--Hauptverzeichnis 2 | |- Unterverzeichnis 2.1 | | |- Unterverzeichnis 2.1.1 | | | |-Datei 2.1.1.1 | | |- Unterverzeichnis 2.1.2 | | | |- Datei 2.1.2.1 | | | |- Datei 2.1.2.2 | |- Unterverzeichnis 2.2 | | |-Datei 2.2.1 | |- Datei 2.1 .... Es soll also in jedes Verzeichnis rein gehen. Zum Beispiel er soll mir das Unterverzeichnis von Hauptverzeichnis 2 Auslesen das wäre dann Unterverzeichnis 2.1 und Unterverzeichnis 2.2 . Als nächstes soll er mir dann das Unterverzeichnisse von 2.1 und 2.2 auslesen also beide und nicht nur das erste (2.1). So hab ich mir das eigentlich gedacht und daher von $ordner abhängig gemacht. Mfg Markus |
Dann verstehe ich nicht, warum du andererseits immer ftp_pwd verwenden willst, wenn du gleichzeitig noch den Ordner übergeben möchtest??
GG |
Deshalb wollte ich ja das Verzeichnis und der Ordner angeben.
Der bisher in $nlist[i] steht. Was man machen könnte wäre innerhalb der If und vor dem Aufruf der Funktion. $unterordner = $nlist[i]; und dann der Aufruf mit rekursiv($ordner, $unterordner); Wäre das jetzt eine Lösung meines Probs? Mfg Markus |
OK habs geschafft. Das Verzeichnis sowie alle Unterverzeichnisse werden aufgelistet. Morgen Früh oder Mittag mach ich mich an das Suchskript. Mal sehen wies läuft und ich das anpacke. Wenn alles läuft schreib ich ein Tut da so was bisher noch nicht existiert.
Mfg Markus |
Alle Zeitangaben in WEZ +2. Es ist jetzt 05:21:15 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.