PHP php schleife soll verzeichniss tabelarisch nach namen sortieren

bazti

Cadet 2nd Year
Registriert
Okt. 2010
Beiträge
24
hiho leutz ;-)

ich hab mir eine php schleife gebaut, die auch wunderbar funktioniert... nur sortiert diese nach änderungsdatum und nicht nach dem namen der datei...

so sieht das ganze jetzt aus:

<?php



// Verzeichnis mit den Dateien

$verzeichnis = 'uploads/';

// Tabellenkopf

echo <<<TABLEHEAD

<table align="center" width="1300px" >

<tr>

<td align="left" ><b><u>MixXnamE</b></u></td>

<td>&nbsp;</td>

<td align="center" ><u><b>Dateigr&ouml;&szlig;e</b></u></td>

<td align="center" ><u><b>Erschienen am</b></u></td>

</tr>

TABLEHEAD;

// Verzeichnis auslesen und Dateien ausgeben

foreach (new DirectoryIterator( $verzeichnis ) as $datei)

// header("Content-Type: application/octetstream");

{

if (!$datei->isDir() && !$datei->isDot())

{

echo '<tr>';

echo '<td align="left" ><font color="#26DD14" ><u>' .$datei->getFilename(). '</u></font></td>';

echo '<td align="left" ><form action="'.$verzeichnis.$datei.'"><button name="Download" action="onclick" hight="500px" wight="500px">Download</button></form></td>';

echo '<td align="center" >' .ceil( $datei->getSize()/1048576 ). ' MB</td>';

echo '<td align="center" >' .date( 'd.m', $datei->getMTime() ). '</td>';

echo "</tr>\n";

}

}

// Tabelle schließen

echo '</table>';

?>

hat wer ne ahnung was ich ändern muss damit das nach namen sortiert ?

PS: ich bin noch anfänger im php bereich, also könnte sein das ich fachbegriffe nciht gleich versteh :-/
 
Zuletzt bearbeitet:
Huihui ich hoffe dir formatierung ist durch das Forum entstanden ^^
poste doch künftig code snippets in den [php_] [/php_] tags (ohne die unterstriche), das macht das lesen leichter ;)
Das Sortieren kannst du nicht so direkt beeinflussen, zumindest wenn ich mir die API so anschaue (http://php.net/manual/de/class.directoryiterator.php)
Was du aber ganz einfach machen könntest ist vor der Ausgabe ersteinmal alle Datein einzulesen und in einem Array zu speichern. Den kannst du dann sortieren nach dem Dateinamen.
das ist auch sicherer denn es wäre ja auch denkbar das beim einlesen der Datein ein Fehler auftritt dann wäre es besser wenn er gar nichts zeigt, so würde er bei dir aber schon nen Teil ausgeben und mittendrinne mit einer Fehlermeldung das Script beenden.
 
PHP:
<?php

foreach (new DirectoryIterator('../directory') as $fileInfo) {
    if($fileInfo->isDot()) continue;
    $files[]  = $fileInfo->getFilename();
}

sort($files, SORT_STRING);

?>

ungetestet, aber sollte den Zweck erfüllen.
 
Zweck erfüllen? Die Tabelle enthält mehr als nur den Dateinamen (Dateigröße, Änderungsdatum)...

PHP:
foreach (new DirectoryIterator('../directory') as $fileInfo) {
    if($fileInfo->isDot()) continue;
    $key = $fileInfo->getFilename();   // evtl key noch anpassen wie lower-/uppercase
               // bei anderer Sortierung, z.B. nach Größe, einfach $key anders belegen und
               // evtl Sortierung anpassen
    $files[$key]  = $fileInfo; 
}

ksort($files, SORT_STRING);

foreach ($files as $key => $fileInfo) {
  // Tabellencode, Daten aus $fileInfo entnehmen
}
 
Zuletzt bearbeitet:

Ähnliche Themen

Zurück
Oben