Şimdi Ara

Resimleri tarihe göre sıralama

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
4
Cevap
0
Favori
3.141
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • resimleri upload ediyorum, ama tarhie göre sıralanmasını istiyorum. filemtime uygulamam gerekiyor, ama nerede ve nasıl uygulayacağımı bilemiyorum. yardım lütfen. iki farklı kod var, ikisi de aynı işi görüyor.

    1. Kod:

    $scandir_array = scandir('files');

    foreach($scandir_array as $folder){

    if(is_dir('files/'.$folder) and $folder!='.' and $folder!='..'){

    // define this key in the array, it will be blank, store categories as keys

    $categories_array[$folder] = array();

    // $total_photos_array[$folder] = 0;

    $files_in_dir = scandir('files/'.$folder);

    foreach($files_in_dir as $file){

    if($file!='.' and $file!='..'){

    // if file is not the category thumbnail (thumbnail.jpg) and not _thumb.jpg and not _small.jpg

    if($file != "thumbnail.jpg" and substr($file, strlen($file)-10) != "_small.jpg" and substr($file, strlen($file)-10) != "_thumb.jpg"){

    // $total_photos_array[$folder]++;

    $base_file_name = substr($file, 0, strlen($file)-4);

    // insert this file in the array of files

    array_push($categories_array[$folder], $base_file_name);

    }

    }

    }

    }

    }

    krsort($categories_array);

    2. Kod:

    if ($handle = opendir('files')) {

    while (false !== ($folder = readdir($handle))) {

    if(is_dir('files/'.$folder) and $folder!='.' and $folder!='..'){

    // define this key in the array, it will be blank, store categories as keys

    $categories_array[$folder] = array();

    // $total_photos_array[$folder] = 0;

    $files_in_dir = scandir('files/'.$folder);

    foreach($files_in_dir as $file){

    // if file ends in _thumb.jpg

    if(strpos($file, '_thumb.jpg') === strlen($file)-10){

    // $total_photos_array[$folder]++;

    $base_file_name = substr($file, 0, strlen($file)-10);

    // insert this file in the array of files

    array_push($categories_array[$folder], $base_file_name);

    }

    }

    }
    }

    closedir($handle);

    }

    krsort($categories_array);







  • Dosyalara döngü içinde ulaştığında yeni bir dizi oluşturup dizi elemanlarınıın anahtarlarını filemtime eklemen değer olarakda dosyayı ataman gerek ki daha sonra ksort veya krsort ile sıralama işlemini yapacaksın.

    Ben kolay bi örnek sunayım sana

    img klasörümdeki dosyaları listeledim.
    her listelediğim bir resmi $files dizisine atadım.
    Atama işlemi yaparken $files dizisine key olarak filemtime($file) yazıp değiştirilme tarihini ekledim

    $files = array(); 
    if ($handle = opendir('img')) {
    while (false !== ($file = readdir($handle))) {
    if ($file != "." && $file != "..") {
    $files[filemtime($file)] = $file;
    }

    }
    closedir($handle);
    }

    ksort($files);




    ksort($files); → önce eklenenden sonra eklenene doğru sıralar (küçükten büyüğe)

    krsort($files); → Son eklenenden önce eklenenlere doğru sıralar (büyükten küçüğe)


    Bu işlemi yaptıktan sonra ekrana basmak istersen foreach ile $files dizinini döndüreceksin filemtime tarihi unix formatında verir o yüzden date fonksiyonuyla istediğin bir biçime çevirmen gerekecektir.

    Kısacası ekrana şu şekilde listelersin

    foreach ($files as $time => $file) { 
    $time = date("d F Y H:i", $time);
    echo $file.' isimli dosya sisteme '.$time.' tarihinde eklendi. <br>';
    }



    < Bu mesaj bu kişi tarafından değiştirildi atabas61 -- 16 Şubat 2015; 14:45:06 >




  • Teşekkürler cevabın için, en son şuraya kadar geldim. arsort ile tarihe göre sıraladım bütün kategorileri, fakat kategorilerde bulunan _thum.jpg dosyaları bastığım zaman, alt klasördeki resimleri göstermiyor. nerde bir eksiğim var anlayamadım.



    $categories_array = array();

    $images = 'files/';
    if ($handle = opendir($images))
    {
    while (false !== ($folder = readdir($handle)))
    {
    if(is_dir($images.$folder) and $folder!='.' and $folder!='..')
    {
    $categories_array[$folder] = array();
    $files_in_dir = scandir($images.$folder);
    $categories_array[$folder] = filemtime($images.$folder);
    foreach($files_in_dir as $file)
    {
    if(strpos($file, '_thumb.jpg') === strlen($file)-10)
    {
    $base_file_name = substr($file, 0, strlen($file)-10);
    array_push($categories_array[$folder],$base_file_name);
    }
    }
    }
    }
    closedir($handle);
    }

    arsort($categories_array);
     Resimleri tarihe göre sıralama Resimleri tarihe göre sıralama




  • Alın size cevabı:

    $categories_array = array ();
    $temp_array = array ();
    $timer_1 = microtime ( true );

    $scandir_array = scandir ( 'files' );
    foreach ( $scandir_array as $folder ) {
    if (is_dir ( 'files/' . $folder ) and $folder != '.' and $folder != '..') {
    $timestamp = filemtime ( 'files/' . $folder );
    $temp_array[$timestamp] = $folder;
    }
    }

    krsort ( $temp_array ); // sorts an array by key.

    foreach ( $temp_array as $folder ) {
    // define this key in the array, it will be blank, store categories as keys
    $categories_array [$folder] = array ();
    $files_in_dir = scandir ( 'files/' . $folder );
    foreach ( $files_in_dir as $file ) {
    if ($file != '.' and $file != '..') {
    // if file is not the category thumbnail (thumbnail.jpg) and not _thumb.jpg and not _small.jpg
    if ($file != "thumbnail.jpg" and substr ( $file, strlen ( $file ) - 10 ) != "_small.jpg" and substr ( $file, strlen ( $file ) - 10 ) != "_thumb.jpg") {
    $base_file_name = substr ( $file, 0, strlen ( $file ) - 4 );
    // insert this file in the array of files
    array_push ( $categories_array [$folder], $base_file_name );
    } // if
    } // if
    } // foreach
    } // foreach



    < Bu mesaj bu kişi tarafından değiştirildi yengec -- 22 Şubat 2015; 20:47:48 >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.