[PHP] Bilder aus Verzeichnis auslesen und nach Datum sortieren

Dieses Thema im Forum "Webentwicklung" wurde erstellt von mySQL, 27. Mai 2009 .

  1. 27. Mai 2009
    Bilder aus Verzeichnis auslesen und nach Datum sortieren

    Moin Jungs

    Kennt jemand ein simples Gallery-Script dass folgendes löst:

    • Bilder aus EINEM Verzeichnis auslesen
    • Nach datum sortieren

    Eventuell so, dass man durchklicken kann Mo-Fr und halt älter Archiv oder sowas ..

    Wenn jemand sowas kennt oder ein Script das ähnlich ist und ohne viel Aufwand umprogrammiert werden kann bitte melden

    BW gibts für gute Ratschläge. Wenn möglich sollte das Script ohne mySQL auskommen.
     
  2. 31. Mai 2009
    AW: Bilder aus Verzeichnis auslesen und nach Datum sortieren

    Hi,
    schau dir das mal an: http://www.suedweb.de/content_showit/showit/index.php?kat=lastpics&sort=1

    Da kann man nach uploaddatum sortieren.
    habe es jedoch noch nicht selbst getestet.

    Greez MahatmaGanja
     
  3. 31. Mai 2009
    AW: Bilder aus Verzeichnis auslesen und nach Datum sortieren

    hat eh langeweile, hab dir ma schnell was gecoded ... als grundbasis sollte es genügen. sowas wie mo-fr, übersicht der daten etc sollte kein problem sein, musst nur nen bissl bei der ausagbe ändern (z.b. in einer tabelle mit verschiedenen infos und nem thumb o.Ä.)

    PHP:
    <?


    $ImagePath  "images/" ;

    $ImageFileList  GetFilesFromDir ( $ImagePath "filectime" );  // index = file created time
    // $ImageFileList = GetFilesFromDir($ImagePath, "filemtime"); // index = last modified time
    // $ImageFileList = GetFilesFromDir($ImagePath, "fileatime"); // index = last accessed time

    ksort ( $ImageFileList );  // bilder nach index sortieren




    // Ausgabe von Bildern

    echo  "<h1>Bilder von: " . $ImagePath . "</h1>" ;
    foreach(
    $ImageFileList  as  $ImageInfo )
    {
        
    $ImageSizeInfo  getimagesize ( $ImageInfo [ 'FullFileName' ]);

        echo 
    "<h3>" . $ImageInfo [ 'FileName' ]. "</h3>" ;
        echo 
    "<img src=\"" . $ImageInfo [ 'FullFileName' ]. "\" width=\"" . $ImageSizeInfo [ 0 ]. "\" height=\"" . $ImageSizeInfo [ 1 ]. "\">" ;
    }








    function  GetFilesFromDir ( $FilePath $IndexFunc  "filemtime" $UniqueValues  true )
    {
        
    $PathHandle  opendir ( $FilePath );

        if (
    $PathHandle  ===  false )
        {
            echo 
    "GetFilesFromDir(): Could not read Directory ( "  $PathHandle  ")" ;
            return 
    false ;
        }

        
    $FileList  = array();
        while (
    false  !== ( $FileName  readdir ( $PathHandle ))) {
            
    $FullFileName  $FilePath  $FileName ;
            if(!
    is_dir ( $FullFileName ))
            {
                if(
    function_exists ( $IndexFunc ))
                {
                    
    $FileIndex  call_user_func ( $IndexFunc $FullFileName );
                }
                else
                {
                    echo 
    "GetFilesFromDir(): "  $IndexFunc  " ist keine Function" ;
                    return 
    false ;
                }

                if(
    $UniqueValues )
                {
                       
    $FileIndex  .=  "_"  md5 ( $FullFileName );  // Verhindern von Array Rewrite
                
    }

                
    $FileList [ $FileIndex ] = array
                (
                    
    "FileName"  =>  $FileName ,
                    
    "FullFileName"  =>  $FullFileName
                     
    // Hier optional weitere Informationen von Datei (Mime-Typ, Dateigröße, ...)
                
    );
            } 
    // if(!is_dir($FullFileName))
        
    // while (false !== ($FileName = readdir($PathHandle)))

        
    return  $FileList ;
    }



    ?>
     
  4. 1. Juni 2009
    AW: Bilder aus Verzeichnis auslesen und nach Datum sortieren

    oder so:
    PHP:
    <? php

    define
    ( 'SCANDIR_SORT_ASC' 1 );  // sortiert von klein nach groß 
    define ( 'SCANDIR_SORT_DESC' 2 );  //sortiert von groß nach klein
    define ( 'SCANDIR_SORT_INCLUDE_DIRS' 4 );  // auch ordner mit aufnehmen und sortieren


    function  scandir_sort ( $dir $callback $flags  null )
    {
        if(
    $flags  ===  null $flags  5 ;
        if(!
    is_callable ( $callback )) {
            
    trigger_error ( __FUNCTION__  '(): sort-callback ist '
                
    'keine funktion' E_USER_WARNING );
            return 
    false ;
        }
        
        if(!
    is_dir ( $dir )) {
            
    trigger_error ( __FUNCTION__  '(): "'  htmlspecialchars ( $dir
                . 
    '" ist kein ordner' E_USER_WARNING );
            return 
    false ;
        }
        
        
    $dir  str_replace ( '\\' '/' realpath ( $dir )) .  '/' ;
        
        
    $arguments  func_get_args ();
        unset(
    $arguments [ 1 ],  $arguments [ 2 ]);
        
        if(!(@
    $files  scandir ( $dir ))) {
            
    trigger_error ( __FUNCTION__  '(): ordner "'  htmlspecialchars ( $dir )
                . 
    '" konnte nicht ausgelesen werden' E_USER_WARNING );
            return 
    false ;
        }
        
        
    $assoc  = array();
        foreach(
    $files  as  $file ) {
            
    $file  $dir  $file ;
            if((
    $flags  4 ) !=  &&  is_dir ( $file ))
                continue;
                
            
    $arguments [ 0 ] =  $file ;
            
    $index  call_user_func_array ( $callback $arguments );
            
            if(
    $index  ===  false ) continue;
            
    $assoc [ $index  $file ] =  basename ( $file );
        }
        
        unset(
    $files );
        
        
    $sortFunc  = ( $flags  ==  1 ) ?  'ksort'  'krsort' ;
        
    $sortFunc ( $assoc SORT_STRING );
        
        return 
    array_values ( $assoc );
    }
    ?>
    die flags kann man mit nem bit-operator angeben

    beispiel:
    PHP:
    $files  scandir_sort ( './' 'filectime' , ~ SCANDIR_SORT_INCLUDE_DIRS );
    liefert nur datein (keine ordner)

    PHP:
    $files  scandir_sort ( './' 'filectime' SCANDIR_SORT_DESC  & ~ SCANDIR_SORT_INCLUDE_DIRS );
    liefert nur datein (keine ordner) und sortiert absteigend (neuste zuerst)

    ----

    alle parameter die du nach den flags angibst werden an den callback gesendet:

    PHP:
    $file  scandir_sort ( './' 'mein_callback' null 'hallo' );
    function 
    mein_callback ( $datei $ausgabe )
    {
        print 
    $ausgabe  "\n" // hallo
        
    return  1 ;
    }
    der erste parameter ist aber immer die datei!

    für deine zwecke hab ich noch die entsprechende funktion erstellt:
    PHP:
    <? php

    function  filectime_image ( $file $check  false )
    {
        
    $imgExt  = array( 'jpg' 'jpeg' 'gif' 'png' );
        
    $ext  strtolower ( substr ( $file strrpos ( $file '.' ) +  1 ));
        
        if(!
    is_file ( $file ) || ! in_array ( $ext $imgExt )
        || (
    $check  ===  true  && !(@ getImageSize ( $file ))))
            return 
    false ;
        
        return 
    filectime ( $file );
    }
    ?>
    beispiel:
    PHP:
    $images  scandir_sort ( './' 'filectime_image' SCANDIR_SORT_DESC  & ~ SCANDIR_SORT_INCLUDE_DIRS );
    liefert alle bilder absteigend sortiert.
    wenn du testen willst ob es sich wirklich um bilder handelt kannst du das ganze auch so machen:

    PHP:
    $images  scandir_sort ( './' 'filectime_image' SCANDIR_SORT_DESC  & ~ SCANDIR_SORT_INCLUDE_DIRS true );
    ---

    ich hoff mal das du da durchsteigst
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.