![]() |
Re: [PHP] Dateiliste gruppieren
Jupp, wenn ich wieder Zeit und Lust habe. Versprochen.
|
Re: [PHP] Dateiliste gruppieren
Oder meinen :stupid:
Code:
function sortFiles($dirName)
{ $fileArray = array(); $dir = dir($dirName); while ($file = $dir->read()) { if (is_file($file)) { $fileDate = gmdate("Y-m-d",filemtime($file)); $fileArray[] = array($fileDate, $file); } } arsort($fileArray); foreach ($fileArray as $file) { echo "$file[1], $file[0]\n"; } } sortFiles("."); |
Re: [PHP] Dateiliste gruppieren
Da habe ich dann aber nur eine sortierte List und keine gruppierte oder?
|
Re: [PHP] Dateiliste gruppieren
Na, irgendwas musst du ja auch noch selbst machen. :mrgreen:
|
Re: [PHP] Dateiliste gruppieren
Sortieren ist ja kein Problem, das kann ich ja schon. ;)
|
Re: [PHP] Dateiliste gruppieren
Ich habe den Code aus
![]()
Code:
Zum Testen des Scriptes hatte ich mir ein paar Dummyfunktionen geschrieben, wie du an meinem ListFiles siehst wird das Datum zum Sortieren mitgespeichert. Würde dies erhalten bleiben (was deine ja nicht macht soweit ich das sehen konnte), so kann man sich das spätere Auslesen sparen...
<?php
// Dateien nach Datum sortiert als Liste auslesen $dir = './'; $files = ListFiles($dir, 'time'); // Dateien nach Jahren gruppiert ausgeben $group_year = 0; foreach ($files as $file) { $file = $dir . $file; $file_year = date('Y', filemtime($file)); if ($file_year <> $group_year) { if ($group_year > 0) { echo ' '; } $group_year = $file_year; echo $group_year . ' '; } echo GetTitleFromHTML($file) . ' '; } ?>
Code:
// --- [Start: Dummy Funktionen zum Test] -----------------------------------
function ListFiles($dir, $foo) { $dh = opendir($dir); $files_tmp = array(); while (($file = readdir($dh)) !== false) { if (is_file($file)) { $files_tmp[] = array(filemtime($dir . $file), $file); } } arsort($files_tmp); $files = array(); foreach ($files_tmp as $file){ $files[] = $file[1]; } return $files; } function GetTitleFromHTML($file) { return '[' . date('Y-m-d', filemtime($file)) . '] ' . basename($file); } // --- [Ende: Dummy Funktionen zum Test] ------------------------------------ |
Re: [PHP] Dateiliste gruppieren
Das ist gemial und funktioniert. :P So schön kurz. :thumb: Ich verstehe den Code nur noch nicht ganz. :gruebel:
|
Re: [PHP] Dateiliste gruppieren
Das Grundprinzip ist recht simple. In der Liste stehen alle Dateien nach Datum sortiert, also die neuste Datei oben. Nun wird geschaut, was fürn Änderungsjahr die Datei hat und eine Gruppe dazu geöffnet (indem das Jahr ausgegeben wird). Nun wird die nächste Datei genommen. Hat sie das gleiche Jahr, dann einfach ausgeben, wenn nicht, dann vorher eine neue Gruppe öffnen (da nun ja keine Datei mehr der ersten Gruppe kommt). Ich habe den Code nochmal was kommentiert:
Code:
<?
// Dateien nach Datum sortiert als Liste auslesen $dir = './'; $files = ListFiles($dir, 'time'); // Aktuelle Gruppe bekommt das Jahr 0 (bedeutet, dass es noch keine Gruppe // vorher gibt - es wäre auch ein anderer Angangswert möglich, hauptsache ist // das der Wert nicht das Änderungsjahr einer Datei ist und somit eindeutig // als Anfangswert erkennbar bleibt [siehe spätere if Abfrage]) $group_year = 0; // Alle Dateinamen der Liste einzelnd durchgehen und in $file schreiben foreach ($files as $file) { // Dem Dateinamen direkt den Ordner voransetzen, damit wir eine komplette // Pfadangabe haben (wird bspw. für filemtime() gebraucht) $file = $dir . $file; // Das Änderungsjahr der Datei ermitteln $file_year = date('Y', filemtime($file)); // Hat die Datei ein anderes Änderungsjahr als das der aktuellen Gruppe // ($group_year), dann muss eine neue Gruppe angelegt werden if ($file_year <> $group_year) { // Sollte es sich nicht um die erste Gruppe (daher die 0) handeln, es // also schon eine andere Gruppe davor geben, dann die Zeilenumbrüche // ausgeben if ($group_year > 0) { echo ' '; } // Die aktuelle Gruppe bekommt nun das Änderungsjahr der Datei $group_year = $file_year; // Jahr wird ausgegeben echo $group_year . ' '; } // Dateiname, -datum, etc. ausgeben echo GetTitleFromHTML($file) . ' '; } ?> |
Re: [PHP] Dateiliste gruppieren
Ah. Jetzt hat es "klick" gemacht. ;) Besten Dank.
|
Re: [PHP] Dateiliste gruppieren
Theoretisch könntest du nun in der Zeile vor Ausgabe des Dateinamens nochmal mit einem ähnlichen Codeblock ansetzen und das ganze wiederum nach Monaten untersortieren, aber das sollte ja nun leicht sein...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz