Tom: umgekehrt ausgeben

Beitrag lesen

Hello,

*grummel*

Aktuell möchte ich eine Liste von Links erstellen, die sich automatisch
erstellt aus den jeweils vorhandenen Ordnern in einem "Sammelordner".
Das stelle ich bislang wie folgt an.

Das bedarf einiger Hinweise:

<ul id="galerienliste">
<?php
$ordner = "./galerien";
$erstellen = opendir($ordner);

erst prüfen, ob opendir() erfolgreich war!

if($erstellen)   ## ist ein belämmerter Bezeichner für ein Verzeichnishandle!
{

die nächste Zeiel ist unsicher, da Dateien oder Verzeichnisse mit dem Namen '0' zum

Abbruch der Schleife führen würden

#> while ($file = readdir ($erstellen))

$_dir = array();
  while (false !==($file = readdir ($erstellen)))
  {

if($file != "." && $file != "..")   ## die beiden if()s lassen sich zusammenfassen

{

if(is_dir($ordner."/".$file))

{
##>             $compl = $ordner."/".$file;
##>             echo "<li><a href="".$compl."">".$file."</a></li>\n";
              $_dir[] = $ordner."/".$file

}
    }
}
closedir($erstellen);

}

echo "<pre>\r\n";
   echo htmlspecialchars(print_r($_dir,1));
   echo "</pre>\r\n";

?>
</ul>

Dort benenne ich die Ordner nun nach dem Schema Jahr_Monat_Tag.
Das ist weder schön noch besonders elegant, aber es tut am Ende jedenfalls,
was ich gerne hätte.
Nur landet in dieser Liste natürlich der älteste Eintrag oben und der
neuste unten. Ich hätte es aber gerne genau umgekehrt.

Kann mich da mal jemand in die Richtung einer Lösung schubsen? Danke!

Trenne Datenhandling (Holen, Verarbeiten, Wegschreiben) von der Visualisierung der Daten

Die Reihenfolge bei readdir() ist keine von der Applikation festgelegte, sondern eine vom OS ausgewürfelte. Die Dateinamen werden so geliefert, wie sie im Filesystem angereiht wurden. Da könnte durchaus auch schon mal eine Lücke gefüllt werden. Kommt eben auf das Filesystem an.

Eine Ordnung erhältst Du nur durch ein Sortierkriterium, dass Du ja in den Namen implementiert hast. Du kannst die Dateien also nach dem Namen sortieren, um Dein Ziel zu erreichen.

Dazu musst Du doch die Namen nur in einem Array sammeln und nicht sofort nach der Beschaffung ausgeben.

Das geht allerdings nur bis zu einer gewissen Anzahl ;-)
Ich hatte neulich das Problemchen mit ca 100.000 Dateien, deren Daten nach Görße und Namen sortiert ausgegeben werden sollten. Da gerät man dann schon leicht an die Speichergrenze von PHP auf typischen Installationen.

und schau Dir auch mal die Funktion glob() an.
http://de2.php.net/manual/en/function.glob.php

die macht das, was Du willst, schon fast automatisch.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de