• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Dateien nach Datum sortieren

Status
Für weitere Antworten geschlossen.

farchris

Mitglied
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."<br/>";
        } else {
            // kompletter Pfad
            $compl = $ordner."/".$file;
            echo "<a href=\"".$compl."\">".$file."</a><br/>";
        }
    }
}
closedir($handle);
?>
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! :)

Mod-EDIT: Code-Tags editiert, nächstes mal bitte dran denken. (Alti)
 
Hallo,
danke für die Antwort:

Wenn ich nun diesen Code eintrage:
Code:
<?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."</a>";
         }
      }
   }

   krsort ($dirs);
   foreach ($dirs as $key => $dir)
      echo $dir . ' - last modified: ' . date ("F d Y H:i:s.", $key) . "<br/>";
      
   krsort ($files);
   foreach ($files as $key => $file)
      echo $file . ' - last modified: ' . date ("F d Y H:i:s.", $key) . "<br/>";

   closedir($handle);
?>


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
 
Zuletzt bearbeitet:
Hallo,

setz noch
PHP:
$dirs = array();
$files = array();
an den Anfang, dann sollte die Warnung verschwinden.

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

N43
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben