Seite 1 von 1
Downloadliste nach dem Aenderungsdatum sortieren
Verfasst: Di 21. Nov 2006, 08:25
von cadessa
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
Verfasst: Di 21. Nov 2006, 14:44
von xmurrix
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
Verfasst: Di 21. Nov 2006, 19:46
von cadessa
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
Danke!
Habe es probiert... funktioniert aber nicht. Muss auch dazu sagen dass ich nicht der beste Programmierer bin
Kann mir da bitte jemand helfen ?
Gruß
Verfasst: Di 21. Nov 2006, 21:16
von xmurrix
cadessa hat geschrieben:
...
Habe es probiert... funktioniert aber nicht. Muss auch dazu sagen dass ich nicht der beste Programmierer bin

...
Hallo cadessa,
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) *
\*****************************************************************************/
gegen
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) *
\*****************************************************************************/
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.
Gruß
xmurrix
Verfasst: Di 21. Nov 2006, 21:28
von cadessa
xmurrix hat geschrieben:cadessa hat geschrieben:
...
Habe es probiert... funktioniert aber nicht. Muss auch dazu sagen dass ich nicht der beste Programmierer bin

...
Hallo cadessa,
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) *
\*****************************************************************************/
gegen
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) *
\*****************************************************************************/
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.
Gruß
xmurrix
Super es hat funktioniert.... ich weiß gar nicht wie ich dir danken soll...
Vielen Dank!
cadessa
Verfasst: Mi 22. Nov 2006, 11:34
von cadessa
Hallo,
hab noch ein Problem, kann man die Downloadlinks inrgendwie in einem neuen Fenster öffnen?
Denn wenn man die Datei gleich anschauen will öffnet sie sich in dem Frame und das ist unschön.
Gruß
Verfasst: Mi 22. Nov 2006, 16:10
von votapero
Hallo xmurrix,
denke, die Sortierung funktioniert nur, wenn du nur eine Datei mit dem selben Zeitstempel hast. Bei mehreren Dateien listet es nur 1 record aus.
Sehe ich das richtig?
Gruss
Verfasst: Mi 22. Nov 2006, 16:59
von cadessa
votapero hat geschrieben:Hallo xmurrix,
denke, die Sortierung funktioniert nur, wenn du nur eine Datei mit dem selben Zeitstempel hast. Bei mehreren Dateien listet es nur 1 record aus.
Sehe ich das richtig?
Gruss
Hallo,
es funtkioniert auch mit mehreren.
Gruß
Verfasst: Mi 22. Nov 2006, 22:26
von votapero
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
Verfasst: Do 23. Nov 2006, 11:28
von cadessa
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
Wie und wo genau muss da was einfügen?
Gruß
Verfasst: Do 23. Nov 2006, 12:05
von votapero
Hallo cadessa,
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 ------------------------------------------------------
Teste es mal aus und teile mir mit, ob es geht.
Grüsse
Verfasst: Do 23. Nov 2006, 12:36
von cadessa
votapero hat geschrieben:Hallo cadessa,
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 ------------------------------------------------------
Teste es mal aus und teile mir mit, ob es geht.
Grüsse
Teste es heute mittag... sitze noch in einer Vorlesung. Schreibe dann ob es geht.
Gruß und Danke