Downloadliste nach dem Aenderungsdatum sortieren
Downloadliste nach dem Aenderungsdatum sortieren
Hallo,
also ich habe folgendes Downloadmodul:
http://www.contenido.de/forum/viewtopic ... c7005b0d46
ich will dass sich das Modul nach dem Aenderungsdatum sortiert, so dass immer der neueste Download ganz oben ist. Ich habe schon alles moegliche probiert, schaffe es aber nicht.
Kann mir da jemand helfen?
Gruss
also ich habe folgendes Downloadmodul:
http://www.contenido.de/forum/viewtopic ... c7005b0d46
ich will dass sich das Modul nach dem Aenderungsdatum sortiert, so dass immer der neueste Download ganz oben ist. Ich habe schon alles moegliche probiert, schaffe es aber nicht.
Kann mir da jemand helfen?
Gruss
Hallo cadessa,
schau dir mal folgenden Post als Lösungsansatz für deinen Sortierungswunsch an:
http://www.contenido.de/forum/viewtopic ... 3662#85717
In deinem Fall würde ich das Beispiel vor der Ausgabe auf die $files-Liste anwenden.
Gruß
xmurrix
schau dir mal folgenden Post als Lösungsansatz für deinen Sortierungswunsch an:
http://www.contenido.de/forum/viewtopic ... 3662#85717
In deinem Fall würde ich das Beispiel vor der Ausgabe auf die $files-Liste anwenden.
Gruß
xmurrix
Danke!xmurrix hat geschrieben:Hallo cadessa,
schau dir mal folgenden Post als Lösungsansatz für deinen Sortierungswunsch an:
http://www.contenido.de/forum/viewtopic ... 3662#85717
In deinem Fall würde ich das Beispiel vor der Ausgabe auf die $files-Liste anwenden.
Gruß
xmurrix
Habe es probiert... funktioniert aber nicht. Muss auch dazu sagen dass ich nicht der beste Programmierer bin
Kann mir da bitte jemand helfen ?
Gruß
Hallo cadessa,cadessa hat geschrieben: ...
Habe es probiert... funktioniert aber nicht. Muss auch dazu sagen dass ich nicht der beste Programmierer bin
...
ok, im Folgenden der Code, den du in der Modulausgabe brauchst, damit die Dateiliste absteigend nach "Datum letzte Änderung" sortiert ist.
Ersetze den Code
Code: Alles auswählen
# filter (and sort) arrays
$files = filterArray( $files, $showFiles, $hideFiles );
$folders = filterArray( $folders, $showFolders, '.,..,'.$hideFolders );
// ----------------------------------------------------------------------------
/*****************************************************************************\
* Output (print table) *
\*****************************************************************************/
Code: Alles auswählen
# filter (and sort) arrays
$files = filterArray( $files, $showFiles, $hideFiles );
$folders = filterArray( $folders, $showFolders, '.,..,'.$hideFolders );
// loop fuer temporaere liste mit "datum letzte aenderung" als schluessel
foreach ($files as $file) {
$mtime = filemtime($ldir."/".$file);
$aSort[$mtime] = $file;
}
unset($files);
// aufsteigende sortierung der liste
ksort($aSort, SORT_NUMERIC);
reset($aSort);
// liste neu setzen (array_reverse kehrt die aufsteigende sortierung um)
$files = array_reverse($aSort, true);
// ----------------------------------------------------------------------------
/*****************************************************************************\
* Output (print table) *
\*****************************************************************************/
Gruß
xmurrix
Super es hat funktioniert.... ich weiß gar nicht wie ich dir danken soll...xmurrix hat geschrieben:Hallo cadessa,cadessa hat geschrieben: ...
Habe es probiert... funktioniert aber nicht. Muss auch dazu sagen dass ich nicht der beste Programmierer bin
...
ok, im Folgenden der Code, den du in der Modulausgabe brauchst, damit die Dateiliste absteigend nach "Datum letzte Änderung" sortiert ist.
Ersetze den CodegegenCode: Alles auswählen
# filter (and sort) arrays $files = filterArray( $files, $showFiles, $hideFiles ); $folders = filterArray( $folders, $showFolders, '.,..,'.$hideFolders ); // ---------------------------------------------------------------------------- /*****************************************************************************\ * Output (print table) * \*****************************************************************************/
Der Eingefügte Code erstellt zuerst eine Liste, in der das Datum der letzten Änderung (filemtime) als Schlüssel gespeichert wird, um die Liste dann zu sortieren.Code: Alles auswählen
# filter (and sort) arrays $files = filterArray( $files, $showFiles, $hideFiles ); $folders = filterArray( $folders, $showFolders, '.,..,'.$hideFolders ); // loop fuer temporaere liste mit "datum letzte aenderung" als schluessel foreach ($files as $file) { $mtime = filemtime($ldir."/".$file); $aSort[$mtime] = $file; } unset($files); // aufsteigende sortierung der liste ksort($aSort, SORT_NUMERIC); reset($aSort); // liste neu setzen (array_reverse kehrt die aufsteigende sortierung um) $files = array_reverse($aSort, true); // ---------------------------------------------------------------------------- /*****************************************************************************\ * Output (print table) * \*****************************************************************************/
Gruß
xmurrix
Vielen Dank!
cadessa
Hi cadessa
Nein, funktioniert nur wenn du dateien hast mit unterschiedlichem Zeitstempel. Wenn du nun via Dateiverwaltung einige Dateien hochlädst, haben diese den gleichen Zeitstempel. Dann funktioniert der array nicht.
Ein zusätzlicher Zähler beim $aSort hilft, dass jede array Zeile unterschiedlich ist. Dann klappt es auch mit Dateien mit gleichem Zeitstempel.
Grüsse
Nein, funktioniert nur wenn du dateien hast mit unterschiedlichem Zeitstempel. Wenn du nun via Dateiverwaltung einige Dateien hochlädst, haben diese den gleichen Zeitstempel. Dann funktioniert der array nicht.
Ein zusätzlicher Zähler beim $aSort hilft, dass jede array Zeile unterschiedlich ist. Dann klappt es auch mit Dateien mit gleichem Zeitstempel.
Grüsse
Wie und wo genau muss da was einfügen?votapero hat geschrieben:Hi cadessa
Nein, funktioniert nur wenn du dateien hast mit unterschiedlichem Zeitstempel. Wenn du nun via Dateiverwaltung einige Dateien hochlädst, haben diese den gleichen Zeitstempel. Dann funktioniert der array nicht.
Ein zusätzlicher Zähler beim $aSort hilft, dass jede array Zeile unterschiedlich ist. Dann klappt es auch mit Dateien mit gleichem Zeitstempel.
Grüsse
Gruß
Hallo cadessa,
würde folgendes einbauen (nur der Bereich mit dem Sort...):
Teste es mal aus und teile mir mit, ob es geht.
Grüsse
würde folgendes einbauen (nur der Bereich mit dem Sort...):
Code: Alles auswählen
// Liste nach Letzte Aenderung sortieren ------------------------------------------------------
// loop fuer temporaere liste mit "datum letzte aenderung" als schluessel
$sort_me = "1";
$zaehl = 10000;
if ($files && $sort_me == "1") {
foreach ($files as $file) {
$zaehl = $zaehl + 1;
$mtime = filemtime($ldir."/".$file);
$mtime = gmdate("YmdHis", $mtime);
$aSort[$mtime .$zaehl] = $file;
}
unset($files);
// aufsteigende sortierung der liste
ksort($aSort, SORT_STRING);
reset($aSort);
// liste neu setzen (array_reverse kehrt die aufsteigende sortierung um)
$files = array_reverse($aSort, true);
}
// Ende Liste nach Letzte Aenderung sortieren ------------------------------------------------------
Grüsse
Teste es heute mittag... sitze noch in einer Vorlesung. Schreibe dann ob es geht.votapero hat geschrieben:Hallo cadessa,
würde folgendes einbauen (nur der Bereich mit dem Sort...):
Teste es mal aus und teile mir mit, ob es geht.Code: Alles auswählen
// Liste nach Letzte Aenderung sortieren ------------------------------------------------------ // loop fuer temporaere liste mit "datum letzte aenderung" als schluessel $sort_me = "1"; $zaehl = 10000; if ($files && $sort_me == "1") { foreach ($files as $file) { $zaehl = $zaehl + 1; $mtime = filemtime($ldir."/".$file); $mtime = gmdate("YmdHis", $mtime); $aSort[$mtime .$zaehl] = $file; } unset($files); // aufsteigende sortierung der liste ksort($aSort, SORT_STRING); reset($aSort); // liste neu setzen (array_reverse kehrt die aufsteigende sortierung um) $files = array_reverse($aSort, true); } // Ende Liste nach Letzte Aenderung sortieren ------------------------------------------------------
Grüsse
Gruß und Danke