AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP] Dateiliste gruppieren

Ein Thema von Luckie · begonnen am 12. Mär 2006 · letzter Beitrag vom 28. Mär 2006
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

Re: [PHP] Dateiliste gruppieren

  Alt 12. Mär 2006, 23:53
Jupp, wenn ich wieder Zeit und Lust habe. Versprochen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#12

Re: [PHP] Dateiliste gruppieren

  Alt 12. Mär 2006, 23:54
Oder meinen
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(".");
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

Re: [PHP] Dateiliste gruppieren

  Alt 12. Mär 2006, 23:56
Da habe ich dann aber nur eine sortierte List und keine gruppierte oder?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#14

Re: [PHP] Dateiliste gruppieren

  Alt 12. Mär 2006, 23:56
Na, irgendwas musst du ja auch noch selbst machen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#15

Re: [PHP] Dateiliste gruppieren

  Alt 12. Mär 2006, 23:58
Sortieren ist ja kein Problem, das kann ich ja schon.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#16

Re: [PHP] Dateiliste gruppieren

  Alt 13. Mär 2006, 00:47
Ich habe den Code aus diesem Post von dir mal als Vorlage genommen. Da ich nicht genau weiß, ob du die Funktion ListFiles() auch noch anders nutzen willst (etwa anders sortieren), habe ich deine Funktionen als Grundlage für den Code genommen:
Code:
<?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) . '
';
  }
?>
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...
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] ------------------------------------
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#17

Re: [PHP] Dateiliste gruppieren

  Alt 13. Mär 2006, 07:06
Das ist gemial und funktioniert. So schön kurz. Ich verstehe den Code nur noch nicht ganz.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#18

Re: [PHP] Dateiliste gruppieren

  Alt 13. Mär 2006, 14:12
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) . '
';
  }
?>
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#19

Re: [PHP] Dateiliste gruppieren

  Alt 13. Mär 2006, 14:18
Ah. Jetzt hat es "klick" gemacht. Besten Dank.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Pr0g
Pr0g

Registriert seit: 21. Mai 2004
809 Beiträge
 
Delphi 7 Personal
 
#20

Re: [PHP] Dateiliste gruppieren

  Alt 13. Mär 2006, 14:20
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...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz