tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
650
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    hank_php hank_php ist offline Grünschnabel
    Registriert seit
    Nov 2008
    Beiträge
    2
    Ich möchte die Dateien eines Ordners auslesen und als Links ausgeben. Diese Liste soll nach dem Datum sortiert sein. Die Files lauten "dd.mm.yy dateiname.txt". Sortiert werden soll also nach dem im Filenamen enthaltenem Datum. Ich hatte es so versucht:

    PHP-Code:
    $i=0;

    $pfad="/";
    $verz=opendir ($pfad);

    while (
    $file=readdir($verz))
    {
    $afile[]=$file;}

    closedir($verz);

    sort($afile);

    $anz=count($afile);

    for(
    $i=0;$i<$anz;$i++)
        {
        
    $utf utf8_encode($afile[$i]);
        
    $link rawurlencode($afile[$i]);
        echo 
    '<li><a href="';
        echo 
    $pfad.$link;
        echo 
    '" class="link">';
        echo 
    str_replace(".txt"""$utf);
        echo 
    '</a></li>';
        } 
    Führt bisher zu:

    * 01.11.08 Test.txt
    * 11.01.09 Test.txt
    * 21.10.08 Test.txt
    * 22.10.08 Test.txt

    Ist so natürlich nicht richtig. Hat jemand ne Idee wie ich die Files korrekt sortieren lassen kann?
     

  2. #2
    Avatar von Loomis
    Loomis Loomis ist offline Mitglied Bunt
    Registriert seit
    Jul 2002
    Ort
    Aschaffenburg
    Beiträge
    1.538
    PHP-Code:
    $str = array();
    $str[] = '01.11.08 Test.txt';
    $str[] = '11.01.09 Test.txt';
    $str[] = '21.10.08 Test.txt';
    $str[] = '22.10.08 Test.txt';

    $files = array();
    foreach( 
    $str as $key => $var )
    {
        
    $tmp explode' '$var );
        
    $files[] = array( 'date' => strtotime$tmp[0] ), 'name' => $tmp[1] );
    }

    asort$files );

    var_dump$files ); 
    Sollte das Leerzeichen, anhand dem ich den Dateinamen auseinander nehme so nicht existieren (ich gehe aber davon aus, da du das so gepostet hast), müsstest du dir mit einem Regulärem Ausdruck weiterhelfen, um obiges zu erreichen.

    Man kann vielleicht noch was schöneres machen mit filemtime().
     
    mfg
    --------------------------------------------------------------------------------
    Kein Support via PN, Email, ICQ, Brieftaube oder Flaschenpost!

    Besucht den tutorials.de-Chat | Anleitung
    RTFM - PHP-Handbuch - MySql Handbuch
    --------------------------------------------------------------------------------
    Surftipp...Der Postillon
    --------------------------------------------------------------------------------
    Signatur v2.2

  3. #3
    hank_php hank_php ist offline Grünschnabel
    Registriert seit
    Nov 2008
    Beiträge
    2
    Hey danke Loomes für Deinen entscheidenden Hinweis.

    strtotime hat bei mir das Datum nicht umrechnen können - das Ergebnis war immer 1970. Ich habe das Datum dann einfach neu aufgebaut und eine insgesamt funktionierende Lösung zusammengeklebt:

    PHP-Code:

    $i
    =0;
    $pfad="pfad/";
    $verz=opendir ($pfad);
    while (
    $file=readdir($verz))
     { 
       if (
    is_dir($file)||$file=="diesedateinicht.txt")
        {}
        else
        {
    $afile[]=$file;}
      }
    closedir($verz);
    $files = array();
    foreach( 
    $afile as $key => $var )
      {
        
    $tmp explode' '$var );
        
    $date explode ('.'$tmp[0]);
        
    $datum date("Y/m/d",mktime(0,0,0,$date[1],$date[0],$date[2]));
        
    $files[] = array( 'date' => strtotime($datum), 'name' => str_replace($tmp[0]." ",""$var) );
      }

    asort$files );

    $anz=count($files);
    for(
    $i=0;$i<$anz;$i++)
      {
        
    $datei $files[$i];
        
    $link rawurlencode(strftime("%d.%m.%Y ",$datei['date']).$datei['name']);
        echo 
    '<li><a href="';
        echo 
    $pfad.$link;
        echo 
    '" class="link">';
        echo 
    strftime("%d.%m.%Y "$datei['date']);
        echo 
    $datei['name'];
        echo 
    '</a></li>';
      } 
    Leider sind meine PHP Kenntnisse minimal. Ich wage also zu bezweifeln das dieser Code schon das non plus ultra ist.
     

  4. #4
    Avatar von Loomis
    Loomis Loomis ist offline Mitglied Bunt
    Registriert seit
    Jul 2002
    Ort
    Aschaffenburg
    Beiträge
    1.538
    Hi,
    es gibt eigendlich immer etwas zu verbessern.
    So schlecht sieht dein Code doch garnicht aus, da haben wir hier schon schlimmeres gesehen.

    /e: Den leeren if-Block in der ersten while-Schleife könntest du beispielsweise überdenken.
     
    mfg
    --------------------------------------------------------------------------------
    Kein Support via PN, Email, ICQ, Brieftaube oder Flaschenpost!

    Besucht den tutorials.de-Chat | Anleitung
    RTFM - PHP-Handbuch - MySql Handbuch
    --------------------------------------------------------------------------------
    Surftipp...Der Postillon
    --------------------------------------------------------------------------------
    Signatur v2.2

Ähnliche Themen

  1. MYSQL KAlender nach Datum gruppieren, nach Uhrzeit sortieren
    Von kamstarr im Forum Relationale Datenbanksysteme
    Antworten: 7
    Letzter Beitrag: 09.01.10, 01:12
  2. Sortieren nach Datum und nach jetztiger Zeit
    Von ciberjoerg im Forum PHP
    Antworten: 1
    Letzter Beitrag: 21.09.09, 08:23
  3. JFileChooser Dateien nach Datum sortieren
    Von Florian Strienz im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 03.09.09, 21:39
  4. Antworten: 0
    Letzter Beitrag: 08.12.07, 19:07
  5. Dateien nach Datum sortieren
    Von Caruso_Nix im Forum Java
    Antworten: 4
    Letzter Beitrag: 22.11.04, 14:38

Stichworte