Arama butonu
Bu konudaki kullanıcılar: 1 misafir
3
Cevap
3255
Tıklama
0
Öne Çıkarma
Resimleri tarihe göre sıralama
Y
11 yıl (24 mesaj)
Onbaşı
Konu Sahibi

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);

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



A
11 yıl (3 mesaj)
Er

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 >

Y
11 yıl (24 mesaj)
Onbaşı
Konu Sahibi

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);
< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @atabas61
Y
11 yıl (24 mesaj)
Onbaşı
Konu Sahibi

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 >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.