Downloadliste nach dem Aenderungsdatum sortieren

Gesperrt
cadessa
Beiträge: 30
Registriert: Mo 18. Sep 2006, 17:57
Kontaktdaten:

Downloadliste nach dem Aenderungsdatum sortieren

Beitrag von cadessa » Di 21. Nov 2006, 08:25

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

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Beitrag von xmurrix » Di 21. Nov 2006, 14:44

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

cadessa
Beiträge: 30
Registriert: Mo 18. Sep 2006, 17:57
Kontaktdaten:

Beitrag von cadessa » Di 21. Nov 2006, 19:46

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ß

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Beitrag von xmurrix » Di 21. Nov 2006, 21:16

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

cadessa
Beiträge: 30
Registriert: Mo 18. Sep 2006, 17:57
Kontaktdaten:

Beitrag von cadessa » Di 21. Nov 2006, 21:28

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

cadessa
Beiträge: 30
Registriert: Mo 18. Sep 2006, 17:57
Kontaktdaten:

Beitrag von cadessa » Mi 22. Nov 2006, 11:34

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ß

votapero
Beiträge: 63
Registriert: Do 9. Mär 2006, 15:04
Kontaktdaten:

Beitrag von votapero » Mi 22. Nov 2006, 16:10

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

cadessa
Beiträge: 30
Registriert: Mo 18. Sep 2006, 17:57
Kontaktdaten:

Beitrag von cadessa » Mi 22. Nov 2006, 16:59

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ß

votapero
Beiträge: 63
Registriert: Do 9. Mär 2006, 15:04
Kontaktdaten:

Beitrag von votapero » Mi 22. Nov 2006, 22:26

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

cadessa
Beiträge: 30
Registriert: Mo 18. Sep 2006, 17:57
Kontaktdaten:

Beitrag von cadessa » Do 23. Nov 2006, 11:28

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ß

votapero
Beiträge: 63
Registriert: Do 9. Mär 2006, 15:04
Kontaktdaten:

Beitrag von votapero » Do 23. Nov 2006, 12:05

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

cadessa
Beiträge: 30
Registriert: Mo 18. Sep 2006, 17:57
Kontaktdaten:

Beitrag von cadessa » Do 23. Nov 2006, 12:36

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

Gesperrt