wie kann ich dieses script sortieren...
x-plosiv
- php
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/");
?>
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
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
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
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
Hallo...danke euch beiden...leider verstehe ich es noch nicht ganz..aber ich mache mich am besten mal schlau über diese 2dimensionalen arrays
Danke
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