[php]readdir nach Datum sortieren?

juan_

juan_

König
Hallo beisammen,
vorweg muss ich sagen, dass ich mich 0 mit php auskenne und auch (vorerst) kein Interesse daran habe. Allerdings ist der, der sich um unsere Intranetseite kümmert, grade im Urlaub und ich wurde temporär damit beauftragt, diese Ausgabe zu sortieren, da ich mich noch am ehesten mit der Strukturierung der Seite auskenne.

Folgendes Problem:
Ich habe hier ein Verzeichnis, welches mit readdir ausgelesen wird. Das Auslesen geschieht allerdings willkürlich, obwohl es -laut php Referenz- nach Anlegung im Dateisystem ausgegeben werden sollte. Also praktisch nach Datum, wenn ich das richtig verstehe.
php.net schrieb:
Die Dateinamen werden in der Reihenfolge zurück gegeben, in der sie innerhalb des Filesystems angelegt wurden.

Sooo, ich habe schon einige Zeit mit googlen verbracht und bin auf folgendes Thema gestoßen: *klick*.
Vom Ansatz her, sieht es auf jedenfall sehr brauchbar aus, wenn es funktionieren würde. Egal, ob ich die Lösung mit "meinem" Code kombiniere oder es aber alleine stehen lasse, er wirft mir immer mit Fehlermeldungen um sich, dass er die Files nicht handeln kann. Außerdem gibt er mir dann ein Array mit den Werten [Datum, File, $file] zurück!

Hier ist unser Code. Wie gesagt, bitte nicht schlagen, nicht mein Werk, ich finde ihn etwas "komisch".. naja, womöglich auch nur in Zusammenhang mit dem Rest:
Code:
dir = '.\ORDNER\BLAAAAAA';

if ($handle = opendir($dir)) {

   while (false !== ($filename = readdir($handle))) {

	$file=str_replace ( " ","%20",$filename);

	  if ($file != "." && $file != "..") {

        echo "<a href=.\ORDNER\BLAAAAAA\\$file target='_blank'>$filename</a>";

		echo "<br>"; 

    } 
	}
        closedir($handle);
}


Wie kann ich es nun -möglichst ohne viel Aufwand- schaffen, die Einträge dem neusten Datum nach zu sortieren?

Wäre für jeden Tipp (Lösung ? :D) und jedes vermiedene Rumgeflame sehr dankbar!

ciao

ps: den Ordnerinhalt zu sortieren geht def. nicht!
 
Einfaches Beispiel:

Anstatt die Ordner direkt in der while-Schleife des dir-Handlers auszugeben, würde ich erstmal ein eindimensionales Array bauen und den Handler beenden.
PHP:
$dir = '/PFAD/WOHIN/AUCH/IMMER/';

if ($handle = opendir($dir)) {
	
	while (false !== ($file = readdir($handle))) 
	{
        if ($file != "." && $file != "..")
		{
			$bla[@filemtime($dir.$file)] = $file;
        }
	}
	closedir($handle);
}

Und nun die Array-Schlüssel (filemtime) mit Wertbeibehaltung wie gewünscht sortieren und ausgeben:

PHP:
krsort($bla);

foreach ($bla as $file)
{
	echo "<a href=\"/PFAD/WOHIN/AUCH/IMMER/".str_replace(" ", "%20", $file)."\" target=\"_blank\">$file</a><br>\n";
}

Frage am Rande: Was soll ".\ORDNER\BLAAAAAA\\" für eine Struktur sein?
 
Einfaches Beispiel:

Anstatt die Ordner direkt in der while-Schleife des dir-Handlers auszugeben, würde ich erstmal ein eindimensionales Array bauen und den Handler beenden.
PHP:
$dir = '/PFAD/WOHIN/AUCH/IMMER/';

if ($handle = opendir($dir)) {
	
	while (false !== ($file = readdir($handle))) 
	{
        if ($file != "." && $file != "..")
		{
			$bla[@filemtime($dir.$file)] = $file;
        }
	}
	closedir($handle);
}

Und nun die Array-Schlüssel (filemtime) mit Wertbeibehaltung wie gewünscht sortieren und ausgeben:

PHP:
krsort($bla);

foreach ($bla as $file)
{
	echo "<a href=\"/PFAD/WOHIN/AUCH/IMMER/".str_replace(" ", "%20", $file)."\" target=\"_blank\">$file</a><br>\n";
}

Frage am Rande: Was soll ".\ORDNER\BLAAAAAA\\" für eine Struktur sein?

hi,
erstmal vielen Dank fuer die Hilfe. Leider werde ichs erst Montag wieder testen können!
Dabei handelt es sich um nen Windowsserver mit frei erfundenen Ordnernamen. Das letzte "\" soll schätze ich mal ein Escapezeichen sein, so wie ich die Lage einschätze :)

Ich melde mich wieder, wenn ich Probleme habe, oder es geklappt hat ! :o)

ciao
 
Dabei handelt es sich um nen Windowsserver mit frei erfundenen Ordnernamen.
Ahh, jetzt erinnere ich mich duster an alte Dos-Zeiten :o

Das letzte "\" soll schätze ich mal ein Escapezeichen sein, so wie ich die Lage einschätze :)
Wenn es eh nur erfunden war, hm´kay. Ich verstand nur nicht warum diese Variable in diesem String escaped werden sollte.

Ich melde mich wieder, wenn ich Probleme habe, oder es geklappt hat ! :o)
Schönes - arbeitsfreies - Wochenende!
 
Hallo,
der Pfad war real, die Ordnernamen habe ich aus Datenschutzgründen geändert!

Ich weiß, dass es mit einem Slash nicht geklappt, wieso kann ich leider nicht sagen.. und das mit dem Escapen war nur ein Schuss ins Blaue !

Danke!
 
//update:

Mojn Mojn,
das Skript zeigt leider nur einen Eintrag an. Ansonsten scheint es zu klappen (Die Verlinkung zumindest;)) !

ciao
 
Versuch mal in der Variable $dir den Ordner mit einem Backslash abzuschließen.
PHP:
$dir = '.\ORDNER\BLAAAAAA\';
 
heeey,

muchas gracias. sieht super aus! vielen dank !

ciao
 

Ähnliche Themen

Filelisting mit PHP zeigt nicht alles an

Xubuntu - AVR32-linux crosscompile sqlite

Dateien aus web Verzeichnis auslesen.

Auslesen eines Ordners und Abrunden der MB Zahl

CMS Problem [php]

Zurück
Oben