+ Antworten
Ergebnis 1 bis 7 von 7

Thema: [PHP] Sortieren nach Datum - Schwerwiegendes Problem

  1. #1
    TP-Member samuelshp macht alles soweit korrekt
    Registriert seit
    Feb 2005
    Beiträge
    32

    Angry [PHP] Sortieren nach Datum - Schwerwiegendes Problem

    Hab folgenden Script der die jpg-Dateien eines Ordners nach dem Datum sortieren soll:
    PHP-Code:
    $file = array();

            
    chdir($img_root.$_GET["kat"]);
            
    $fd dir($img_root.$_GET["kat"]);
            while(
    $v $fd->read()) {
                    if(
    is_file($v) && (strtolower(substr($v,-3)) == "png" || strtolower(substr($v,-3)) == "jpg" || strtolower(substr($v,-4)) == "jpeg")) {
                        
    $key filemtime($v);
               
    $file[$key] = $v;

                               }
            }
             
    ksort($file);
        
    $arr = array();
             
    $arr array_reverse($file);

            
    $fd->close(); 
    Also kann ich davon ausgehen, dass im Array $arr alle Dateinamen sortiert nach dem Datum drin sind? Oder nicht?
    Es gibt nämlich ein Problem. In manchen Ordnern werden nicht alle Bilder angezeigt. ich hab da einen da sind 5 Bilder drin es werden aber nur 3 angezeigt. in anderen Ordnern wiederum werden alle angezeigt. Nach dem Datum wird allerdings immer sortiert. ich verstehs einfach nicht.
    Geändert von samuelshp (25.02.2005 um 22:04 Uhr)

  2. #2
    TP-Specialist Dennis The Menace bringt sich richtig ein Dennis The Menace bringt sich richtig ein Avatar von Dennis The Menace
    Registriert seit
    Nov 2004
    Ort
    Ich komme aus dem Zauberwald
    Beiträge
    2.035
    Nein, in dem Array sind nur Dateien, die mit png, jpg oder jpeg enden...
    Ich nehm mal an, da wird auch das Problem liegen.
    Zwei Dinge sind Unbestreitbar:
    • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
    • Die Erde ist eine Scheibe!
    Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
    Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

  3. #3
    TP-Member samuelshp macht alles soweit korrekt
    Registriert seit
    Feb 2005
    Beiträge
    32
    es sind ja 5 dateien mit der Endung jpg drin!

    Noch was, wenn ich filectime verwende, dann wird nur 1 Bild ausgegeben.

    Also mir erscheint das alles mehr als unlogisch.
    Geändert von samuelshp (25.02.2005 um 20:55 Uhr)

  4. #4
    TP-Specialist Dennis The Menace bringt sich richtig ein Dennis The Menace bringt sich richtig ein Avatar von Dennis The Menace
    Registriert seit
    Nov 2004
    Ort
    Ich komme aus dem Zauberwald
    Beiträge
    2.035
    Irgendwie gibts $fd2 bei dir gar nicht, dann sollte dass is_file nicht laufen [wenn chdir darauf keinen einfluss nimmt], da php die Datei dann im falschen Verzeichniss sucht.
    Naja:

    PHP-Code:
    <?php

        
    //Die eigentliche Funktion
        
    function foobar$dir )
        {
          
    //Initalisierung eines neuen Arrays
            
    $array = array();

          
    //Öffnen eines Verzeichnisses (ohne weitere Sicherheitsüberprüfungen)
            
    $opendir opendir$dir );

          
    //Auslesen des Verzeichnisses
            
    while( $file readdir$opendir ) ):

              
    //Der absolute Pfad zur Datei
               
    $absolute $dir DIRECTORY_SEPARATOR $file;

              
    //Hinzufügen, wenn es das ist, was wir gesucht haben
               
    if( is_file$absolute ) && endsWith$file, array('.jpg','.jpeg','.png') ) )
                  
    $arrayfilemtime$absolute ) ] = $file;

            endwhile;

          
    //Schließen des Verzeichnisses
            
    closedir$opendir );

          
    //Sortieren wir das ganze mal
            
    uksort$array'cmp' );

          
    //Rückgabe
            
    return $array;

        }

        
    //Hilfsfunktionen
        
    function endsWith$file$array )
        {
         foreach( 
    $array as $extension )
           if( 
    strtolowersubstr$file , -strlen$extension ) ) ) == $extension )
             return 
    true;

         return 
    false;
        }

        function 
    cmp$a$b )
        {
         if( 
    $a == $b ) return 0;
         return( 
    $a $b ) ? -1;
        }


        
    //Möglicher Funktionsaufruf
          
    foreach( foobar$img_root $_GET["kat"] ) as $timestamp => $bildname )
            echo 
    $timestamp.': '.$bildname."<br />";

    ?>
    Wäre so mein funktionaler Lösungsvorschlag
    Zwei Dinge sind Unbestreitbar:
    • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
    • Die Erde ist eine Scheibe!
    Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
    Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

  5. #5
    TP-Member samuelshp macht alles soweit korrekt
    Registriert seit
    Feb 2005
    Beiträge
    32
    Oh, das mit $fd2 hab ich aus versehen vergessen wieder hier im Forum umzuändern. (habs verändert) Danke erstmal für die Arbeit - wird allerdings ein ganzes Stück dauern bis ich das in meinen komplexen Aufbau eingebaut habe.
    Aber ich noch was sehr interessantes herausgefunden:
    Ich hatte ja gesagt von 5 Bildern werden nur 3 ausgegeben. Die 5 Dateien haben folgende Erstellungsdaten: jeweils 09.11.2004 und dann das interessant:
    1.Datei: 12:21 -> wird angezeigt
    2.Datei: 12:22 -> wird angezeigt
    3.Datei: 12:22
    4.Datei: 12:22
    5.Datei: 12:24 -> wird angezeigt

    Ist doch auffällig oder? Kann man da vielleicht doch eine einfachere Lösung finden?
    Geändert von samuelshp (25.02.2005 um 22:05 Uhr)

  6. #6
    TP-Specialist Dennis The Menace bringt sich richtig ein Dennis The Menace bringt sich richtig ein Avatar von Dennis The Menace
    Registriert seit
    Nov 2004
    Ort
    Ich komme aus dem Zauberwald
    Beiträge
    2.035
    Was ist denn noch einfacher als Funktionen? Die packst die drei Funktion irgendwo hin in der PHP Datei, und brauchst dann nur noch

    PHP-Code:
    foreach( foobar$img_root $_GET["kat"] ) as $timestamp => $bildname 
            echo 
    $timestamp.': '.$bildname."<br />"
    An der Stelle, an der du die Ausgabe haben möchtest, eingeben

    Naja, ich nehm mal an, deine Sortierfunktion wird etwas verhauen, kannst es ja mal mit uksort in assoc with cmp versuchen.
    Zwei Dinge sind Unbestreitbar:
    • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
    • Die Erde ist eine Scheibe!
    Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
    Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!

  7. #7
    321
    321 ist offline
    TP-Specialist 321 hilft, wo's geht 321 hilft, wo's geht 321 hilft, wo's geht Avatar von 321
    Registriert seit
    Nov 2004
    Ort
    Die Insel in Europa die aus Europa erst Europa macht _________________________ Nähe Lenzburg
    Beiträge
    4.248
    Ein Array-Eintrag mit gleicher Zeit überschreibt den Dateinamen ($file) des schon bestehenden Eintrags:

    $array[ filemtime( $absolute ) ] = $file;
    [321 Name="Joe"]
    wie immer, lieber gleich mit notepad, dem Editor meines Vertrauens
    [/321]


    use my HTML-Tester

    Motto'06: Mut zur deutschen Sprache!

+ Antworten

Ähnliche Themen

  1. Antworten: 15
    Letzter Beitrag: 19.03.2006, 05:57
  2. Problem mit Datum sortieren
    Von Flow09 im Forum Traum-Dynamik
    Antworten: 24
    Letzter Beitrag: 25.04.2003, 13:01
  3. SELECT: aktuellstes Datum über 5 Spalten
    Von SinnChrisE im Forum Traum-Dynamik
    Antworten: 3
    Letzter Beitrag: 18.04.2003, 22:54
  4. [php] verzeichnis-inhalt sortieren
    Von steff im Forum Traum-Dynamik
    Antworten: 2
    Letzter Beitrag: 02.10.2002, 15:16
  5. [PHP] 2 Zeichen nach dem Komma :)
    Von Sebi im Forum Traum-Dynamik
    Antworten: 2
    Letzter Beitrag: 01.08.2002, 20:17

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51