x-plosiv: wie kann ich dieses script sortieren...

hallo forum....ich habe ein problem. ich habe folgendes script, es listet alle dateien in einem ordner auf und zwar in immer die neuste datei zu unterst. ich würde jedoch die neuste datei zuoberst ausgeben. ist dies möglich oder muss ich da über eine datenbank gehen oder so...danke für eure hilfe

gruss
xplosiv

<?PHP

function show_dir($dir, $pos=2)
{
    if($pos == 2)
    {
        echo "<hr><pre>";
    }

$handle = @opendir($dir);
    while ($file = @readdir ($handle))
    {
        if (eregi("^.{1,2}$",$file))
        {
            continue;
        }

if(is_dir($dir.$file))
        {
            printf ("% ".$pos."s <b>%s</b>\n", "-", $file);
            show_dir($dir.$file."/", $pos + 3);
        }
        else
        {
            printf ("% ".$pos."s %s\n", "|-", "<a href='../uploads");
   echo $file;
   echo "'>";
   echo $file;
   echo "</a><br>";
        }
    }
    @closedir($handle);

if($pos == 2)
    {
        echo "</pre><hr>";
    }

}

show_dir("../uploads/");

?>

  1. hi,
    is ne weile her mit php und weiß auch nicht so recht, was die Funktion übergeben bekommt - was mir einfällt:

    wenn das die Stelle ist, an der das Listing beginnt:

    printf ("% ".$pos."s <b>%s</b>\n", "-", $file);
                show_dir($dir.$file."/", $pos + 3);

    und/oder das:
                  printf ("% ".$pos."s %s\n", "|-", "<a href='..

    und/oder das:

    echo $file;
       echo "'>";
       echo $file;
       echo "</a><br>";

    weise an dieser/diesen Stelle/n den jeweiligen Inhalt von $pos,$dir,$file einem Array zu (tmp[] - oder sowas), bei jeder Zuweisung Zähler+=3 - dann hast du nach der letzten Zuweisung den Startwert für sowas wie:
    while(Zähler>0)
    {
        printf ("% ".tmp."s ...
        Zähler-=3;
    }

    auf 3 komme ich wegen der 3 Variablen !?
    mußt die Reihenfolge der Zuweisungen der gewünschten Ausgabeform anpassen - vermute, dass es Schwierigkeiten gibt, wenn nicht bei jedem Durchlauf die gleiche Anzahl von Werten zugewiesen wird ...

    nur 'n Gedankenansatz und kann auch voll daneben liegen  ...

    viel Erfolg

    Gruß
    Daniel

    1. Moin!

      weise an dieser/diesen Stelle/n den jeweiligen Inhalt von $pos,$dir,$file einem Array zu (tmp[] - oder sowas), bei jeder Zuweisung Zähler+=3
      auf 3 komme ich wegen der 3 Variablen !?

      Das ist absolut keine gute Idee. Die drei Variablen sollen ja nicht auseinandergetauscht werden. Also benutzt man am sinnvollsten ein mehrdimensionales (hier: zweidimensionales) Array.

      mußt die Reihenfolge der Zuweisungen der gewünschten Ausgabeform anpassen - vermute, dass es Schwierigkeiten gibt, wenn nicht bei jedem Durchlauf die gleiche Anzahl von Werten zugewiesen wird ...

      nur 'n Gedankenansatz und kann auch voll daneben liegen  ...

      Der Ansatz ist richtig: Verzeichnis einlesen, zwischenspeichern, sortieren und dann erst ausgeben.

      - Sven Rautenberg

      --
      ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
      1. Re Moin!

        Das ist absolut keine gute Idee. Die drei Variablen sollen ja nicht auseinandergetauscht werden. Also benutzt man am sinnvollsten ein mehrdimensionales (hier: zweidimensionales) Array.

        Bingo!

        aber ist nicht doch der Bezug der Werte zueinander auch in einem eindimensionalen Array eindeutig (durch das Aufeinanderfolgen) und beim Auslesen durch richtiges Steppen (nicht tanzen sondern abstufen, hehe) anzeigbar ? und wieso ausgetauscht ? bin neugierig geworden.

        Gruß

        Daniel

        1. Moin!

          aber ist nicht doch der Bezug der Werte zueinander auch in einem eindimensionalen Array eindeutig (durch das Aufeinanderfolgen) und beim Auslesen durch richtiges Steppen (nicht tanzen sondern abstufen, hehe) anzeigbar ? und wieso ausgetauscht ? bin neugierig geworden.

          PHP hat ganz wunderbare Sortierfunktionen.

          Wenn man aber die benutzt, die eindimensionale Arrays sortieren, wird die Reihenfolge unweigerlich auseinandergerissen. Und das darf nicht passieren.

          Ich halte es darüber hinaus auch für eine sehr unsichere Angelegenheit, den Sinn eines Array-Eintrags nur an seiner Position festzumachen. Da kann zuviel schiefgehen seitens der Programmierung, zumal es ja viel bessere Methoden (zweidimensionale Arrays, Hashes) gibt.

          - Sven Rautenberg

          --
          ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
          1. Hallo...danke euch beiden...leider verstehe ich es noch nicht ganz..aber ich mache mich am besten mal schlau über diese 2dimensionalen arrays

            Danke

            1. Moin!

              Hallo...danke euch beiden...leider verstehe ich es noch nicht ganz..aber ich mache mich am besten mal schlau über diese 2dimensionalen arrays

              Ein sehr guter Ansatz. :) Ist wirklich nicht kompliziert.

              $einarray['index1']['index2'] <- so simpel mit zwei Textindices

              $einarray[123][345] <- mit zwei Zahlenindices

              $einarray[123]['textindex'] <- gemischt geht's auch

              - Sven Rautenberg

              --
              ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|