Dateien nach Datum sortieren

Hallo,
ich habe einen PHP Code, um Dateien aus einem Ordner auszulesen:

[php]<?php

$ordner = „./ordner/“;
$handle = opendir($ordner);
while ($file = readdir ($handle)) {
if($file != „.“ && $file != „…“) {
if(is_dir($ordner.„/“.$file)) {
echo „/“.$file.„
“;
} else {
// kompletter Pfad
$compl = $ordner.„/“.$file;
echo „<a href="“.$compl.„">“.$file.„
“;
}
}
}
closedir($handle);
?> [/php]
nun möchte ich aber gerne, das sich die Dateien nach dem Datum sortieren.
Die neuste Datei soll immer oben stehen.

Kann mir jemand den Code so ändern?

Danke! :slight_smile:

Mod-EDIT: Code-Tags editiert, nächstes mal bitte dran denken. (Alti)

[phpnet]filemtime[/phpnet]
Wird dir weiterhelfen.

Hallo,
danke für die Antwort:

Wenn ich nun diesen Code eintrage:
<?php $ordner = "./otr-download/"; $handle = opendir($ordner); $filename = 'datum.txt'; if (file_exists($filename)) { echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename)); } while ($file = readdir ($handle)) { if($file != "." && $file != "..") { if(is_dir($ordner."/".$file)) { echo "/".$file."<br/>"; } else { // kompletter Pfad $compl = $ordner."/".$file; echo "<a href=\"".$compl."\">".$file."</a><br/>"; } } } closedir($handle); ?>

Dann steht bei mir folgendes:
datum.txt was last modified: March 25 2007 13:25:30.

Ich würde aber einfach nur gerne die Files sortiert haben - der neuste File soll oben angezeigt werden, anstatt unten.

Danke!

Hallo,
du musst die Dateien erst in ein Array eintragen, mit dem Datum als Schlüssel, dann sortieren und dann ausgeben.

[php]<?php
$ordner = „./otr-download“;
$handle = opendir ($ordner);

while ($file = readdir ($handle)) {
if($file != „.“ && $file != „…“) {
$compl = $ordner.„/“.$file;
if(is_dir($compl)) {
$dirs [filemtime ($compl)] = „/“.$file;
} else {
// kompletter Pfad
$files [filemtime ($compl)] = „<a href="“.$compl.„">“.$file.„“;
}
}
}

krsort ($dirs);
foreach ($dirs as $key => $dir)
echo $dir . ’ - last modified: ’ . date („F d Y H:i:s.“, $key) . „
“;

krsort ($files);
foreach ($files as $key => $file)
echo $file . ’ - last modified: ’ . date („F d Y H:i:s.“, $key) . „
“;

closedir($handle);
?>[/php]

N43

Hallo, es funktioniert soweit:
Es kommt nur eine kleine Fehlermeldung:

Warning: krsort() expects parameter 1 to be array, null given in /srv/www/vhosts/comuse.org/subdomains/otr/httpdocs/otr.php on line 110

Warning: Invalid argument supplied for foreach() in /srv/www/vhosts/comuse.org/subdomains/otr/httpdocs/otr.php on line 111

und kann man es vielleicht so machen, das hinter der Datei nicht:
last modified: March ** ***** ::**. steht?
Danke!

Gruß
Chris

Hallo,

setz noch [php]$dirs = array();
$files = array();[/php]an den Anfang, dann sollte die Warnung verschwinden.

Das „last modified“ einfach hinter der Ausgabe in der foreach-Schleife entfernen.

N43

Danke, funktioniert :slight_smile: