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!
Mod-EDIT: Code-Tags editiert, nächstes mal bitte dran denken. (Alti)
system
25. März 2007 um 11:15
2
[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!
N43
25. März 2007 um 12:10
4
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
N43
25. März 2007 um 13:30
6
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