Vinzenz: Datei auf dem Server verschieben

Beitrag lesen

Hallo Dennis,

$quelle = '../admin/2004_03.txt';
$ziel = '2004/2004_03.txt';

Relative Pfade sind mit Vorsicht zu geniessen, sie sind relativ zum Skript.
Ich bevorzuge für meine Nutzdaten ein Datenverzeichnis ausserhalb der document-root und ausserhalb des Skriptbereiches.

if(file_exists($quelle)) {
if(rename($quelle, $ziel)) {
  echo "Kopiert.";
}
}
=> Klappt nicht! Warnmeldung:
Warning: rename(../admin/2004_03.txt,2004/2004_03.txt) [function.rename]: No such file or directory in C:\_TPP_Engine\_base\apache_files\www\s4.cybton.com\gaestebuch\archiv\index.php on line 28

Sieht eigentlich gut aus, macht bei mir
    Fedora Linux Core 2
    Apache 2.0.49
    PHP 4.3.4
(Standardkonfiguration der Installation) was es soll.

Unter Windows kann dies eventuell an fehlenden Löschrechten für die Datei liegen. Darf apache die Datei löschen?

Initialisiere ein Array mit Einträgen für jeden Monat mit dem Wert false für jeden Eintrag
Für alle Dateien in Deinem Verzeichnis

Siehe Beispiel bei http://www.php.net/manual/de/function.readdir.php

Ermittle den Monatsanteil des Dateinamens

mit substr() http://de.php.net/manual/de/function.substr.php

Setze einen entsprechenden Arrayeintrag von false auf true

$monate[$akt_monat] = true;

Nächste Datei

Da bin ich jetzt nicht ganz mitgekommen. Wie meinst du das?
Kannst du mir da mal noch etwas Code geben?

Siehe oben :-)

Bitte bedenke, dass es auch verschiedene Jahre gibt, also z.B. geht es um:
2003_05.txt
2003_06.txt
[...]
2004_04.txt

Möchtest Du für jedes Jahr eine entsprechende Übersicht?
Dann arbeite mit zweidimensionalen Arrays.
Extrahiere Jahr und Monat aus dem Dateinamen. Damit hast Du die Indizes Deines zweidimensionalen Arrays.

Freundliche Grüsse,

Vinzenz