PHP – Klasör içinde istenen uzantıdaki dosyaları listelemek

PHP Script
Scriptimiz başlıktan da anlaşılabileceği üzere bir dizinin içerisinde sadece sizin belirlediğiniz uzantıdaki dosyaları listelemeye yarıyor (mp3, avi vb.). Mümkün mertebe basit ve anlaşılır tutmaya çalıştım, $uzanti = “mp3”; değişkenine listeletmek istediğiniz uzantıyı atamanız yeterli.

HTML sayfa başlangıcı:

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
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
<title>Egonomik.com :: PHP - Klasör içinde istenen uzantıdaki dosyaları listelemek</title>
<style type="text/css">
body {
    font-family: Arial;
    font-size: 12px; }

.title {
    background:#4A4A4A;
    padding: 4px;
    font-size: 13px;
    color: #FFFFFF; }

.satir1 {
    background: #F2F2F2;
    padding: 4px;
    font-family: Arial;
    font-size: 11px; }

.satir2 {
    background: #F8F8F8;
    padding: 4px;
    font-family: Arial;
    font-size: 11px; }
</style>   
</head>
<body>

php kodu:

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
<?php

$dizin = "./data/dosyalar";
$uzanti = "mp3"; //hangi uzantı?

//Uzantı alma fonksiyonu
function ext($text)  {
    $text = strtolower(pathinfo($text, PATHINFO_EXTENSION));
    return $text;  }

echo '<div class="title"><b>'.$uzanti.'</b> uzantılı dosyalar:</div>';

if ($handle = opendir("$dizin") or die ("Dizin acilamadi!")) {

    while (false !== ($file = readdir($handle))) {
    $filetype = ext($file);

        if(is_file($dizin."/".$file) && $filetype == "$uzanti") { //eger bir dosya ise ve bizim belirlediğimiz uzantıya sahipse

        $class = ($css % 2) ? "satir1" : "satir2"; // her satira farklı class

        echo '
        <div class="'
.$class.'"><a href="'.$dizin.'/'.$file.'">'.$file.'</a> </div>';

        $css++;

        }

    } //while end

    closedir($handle);

}

?>

safya sonu:

1
2
</body>
</html>

Facebook Yorumları

21 Yorum

  1. caner peki 2-3 farklı uzantıyı birden listelemek veye bütün uzantıları listelemek için nasıl bi degişiklik yapabiliriz onuda eklersen iyi olur dostum

  2. $uzanti = “mp3”;
    $uzanti2 = “jpg”;

    if(is_file($dizin.”/”.$file) AND $filetype == “$uzanti” OR  $filetype == “$uzanti2”) { //eger bir dosya ise ve bizim belirlediğimiz uzantıya sahipse
     
    Şeklinde ekleme yaparsan çalışacağını umuyorum. İstersen 3 farklı uzantı yap 😉

  3. forzamad belki $uzanti değerini array yapıp
    arrayı for’la döndürüp içindeki uzantıları çekebilirsin ve bunu diğer işlemin arasına koyarsan if ile kontrol eder aynı uzantılara sahipleri listeletirsin 🙂

  4. Caner
    Yazar

    Ayrıca eğer klasördeki tüm dosyaları listelemek istiyorsan

    1
    if(is_file($dizin.?/?.$file) && $filetype == ?$uzanti?) {

    satırındaki && $filetype == $uzanti koşulunu kaldırman yeterli. Bu durumda uzantı alma fonksiyonuna ve $uzanti değişkenine ihtiyacın kalmıyor tabi.

  5. Caner
    Yazar

    @Taner aşağıdaki kodlar işini görecektir, “$adet” değişkenine kaç kayıt görüntülemek istediğini belirtmen yeterli:

    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
    <?php

    $dizin = ?../egonomik?;
    $uzanti = ?php?; //hangi uzantı?
    $adet = ?2?; //kaç adet görüntülenecek?

    //Uzantı alma fonksiyonu
    function ext($text)  {
    $text = strtolower(pathinfo($text, PATHINFO_EXTENSION));
    return $text;  }

    echo ?<div class=?title?><b>?.$uzanti.?</b> uzantılı dosyalar:</div>?;

    $say = 1;

    if ($handle = opendir(?$dizin?) or die (?Dizin acilamadi!?)) {

    while (false !== ($file = readdir($handle))) {
    $filetype = ext($file);

    if(is_file($dizin.?/?.$file) && $filetype == ?$uzanti? && $say <= ?$adet?) { //eger bir dosya ise ve bizim belirlediğimiz uzantıya sahipse

    $css = 0;
    $class = ($css % 2) ? ?satir1? : ?satir2?; // her satira farklı class

    echo ?
    <div class=??.$class.??><a href=??.$dizin.?/?.$file.??>?.$file.?</a> ?.$say.?</div>?;

    $css++;        
    $say++;
    }                          

    } //while end

    closedir($handle);

    }

    ?>
  6. Hocam peki FTP programında İ harfi ve Ş harfi düzgün gösterilirken php formatı UTF-8 ve windows 1254 kodunu sizdeki gibi attığım halde şu şekilde sonuç verdi bu hatanın sebebi nedir ?

    Azeri K?z? G?nel – Ne Olur Allah?m.zip
    Herem – Yakalarsan Sobele 2008.zip
    H?seyin Alt?n – D?rt Duvar Aras?nda.zip
    Kahtal? Mi?e – S?ze G?ne? Dogdu.zip

    Teşekkürler iyi çalışmalar.

  7. caner abi benim şöyle bir kod yazman gerek;
    Veritabanında “radyo” tablosunda “id”, “adi”, “linki”,”resmi”, “turu” adında sutunlarım var ve ben “turu” sütununa  “mms” ve “rmtp” oalrak girilmiş radyoları  (if / else kullanarak echo edip) farklı flash oynatıcılara nasıl aktarırım?
    PHP BİLGİM AZ YARDIMINI BEKLİYORUM SAYGILAR….

  8. ramazan

    Caner abi sonunda yaptım mantık üzerinde yoğunlaşınca insan neler yapıyor yahu 😀
    çok teşekkürer…

  9. İlknur

    Konuyu hortlatmak gibi olacak ama 🙂 Caner peki bunda şunu nasıl yapabiliriz, arama kısmı yapsak en başa ve arama kısmına yazılan kelimeden olan dosyayı sadece gösterse? YAni misal pdf dosyalarını listelese ama gizlese, göstermese sadece arama kısmına abc yazdığında listede abc ile ilgili sonuçları gösterebilse. Yapılabilinirmi bu_? Baya uğraştım ama bi türlü çözemedim. Bi el atabilirmisin hayrına be caner (:

  10. Caner
    Yazar

    İlknur tam olarak bu bahsettiğin konuyla ilgili bir jQuery script hazırlıyorum, bugün veya yarın akşama yayınlamış olurum işini görür.

  11. Orhan

    Hocam Konuyu bende hortlatayım müsadenizle.
    Türkçe karakterli bir dosya ismi veya dosya isminde satır boşluğu olursa dosyaya tıklandıgında açılmıyor. Rica etsem Bunun bir çaresi varmı ?
    örnek: Şeker Ağacı.jpg

  12. Atakan Yasin Uludağ

    Hocam merhaba ;
    Şimdi ben dosyaları listeletiyorum ama mesela benim klasör yolum şöyle /repo/debs/…
    bu repo klasörünün altındada birsürü klasör var. bu klasör içindeki png dosyalarını listeleteceğim. ama klasör içinde klasör olduğu için sorun oluyor bunu nasıl çözebilirim.

  13. gecekule

    Merhaba,
    Bu güzel kod için teşekkür ederim,
    Benim şöyle bir sorum olacak, klasörde listelenecek dosya yoksa “Listelenecek dosya mevcut değil” yazısını nasıl gösterebilirim?

    Teşekkür ederim
    Kolay gelsin

  14. Erkan

    Hocam elinize sağlık gerçekten güzel bir paylaşım olmuş. Peki bir soru da ben sorsam
    listelemeyi admin ve userlar için ayrı sayfalarda yapıyorum. kullanıcılar için dosyagor.php admin içinde dosya yükleme sayfasının içine dosyalar.php olarak include ediyorum.
    Burada admin için dosyalar.php sayfasında bir de sunucudan silme butonu koyma şansımız var mıdır? teşekkürler.

  15. Burak Önder

    PHP Warning: opendir(./klasor/): failed to open dir: No such file or directory in /home/xxxxx/public_html/klasor/index.php on line 42
    için napabilirim?

  16. Mustafa.Ç

    Merhaba Hocam Kolay Gelsin
    Benim sizden bi yardıma ihtiyacım var. Arama yapacağımız klasör hostingte değilde bilgisayarda bulunan bir klasör içerisinde arama yapabilmeyi nasıl yapabiliriz?

Uyarı: Yorumlarda link kullanmayınız. Link içeren yorumlar otomatik olarak spam kabul edilmektedir.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir