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

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>

İlginizi Çekebilecek Diğer İçerikler

23 Yorum

  1. forzamad dedi ki:

    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. EvrenWeb dedi ki:

    $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. Murat ALABACAK dedi ki:

    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 Öncel dedi ki:

    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. forzamad dedi ki:

    saolun simcik code tammlandı :D

  6. Taner dedi ki:

    hocam peki kısıtlama yapmamız için ne gerekli yani sadece 2 kayıt çekmesini istiyorsak ?

  7. Caner Öncel dedi ki:

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

    }

    ?>
  8. Taner dedi ki:

    Çok teşekkür ederim hocam. Ellerinize sağlık.

  9. Uğur ŞİRİN dedi ki:

    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.

  10. Caner Öncel dedi ki:

    Dosyanın başına aşağıdaki kodu eklersen sanırım düzelir Uğur:

    1
    header ('Content-type: text/html; charset=utf-8');
  11. Uğur ŞİRİN dedi ki:

    Tam olarak anlayamadım. HTML tag’ının içine mi koyayım yoksa başka bir yere mi. Çözemedim. Teşekkürler, iyi çalışmalar..

  12. ramazan dedi ki:

    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….

  13. ramazan dedi ki:

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

  14. İlknur dedi ki:

    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 (:

  15. Caner Öncel dedi ki:

    İ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.

  16. Orhan dedi ki:

    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

  17. Atakan Yasin Uludağ dedi ki:

    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.

  18. gecekule dedi ki:

    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

  19. Erkan dedi ki:

    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.

  20. Burak Önder dedi ki:

    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?

  21. Mustafa.Ç dedi ki:

    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?

  22. Kamil dedi ki:

    merhaba çok güzel bir konu, ben sitemde thumbnail sistemi oluşturdum. Sistem sayfa açılırken resim varmı kontrolünü yapıyor eğer yoksa resmin thumbnailini oluşturup açıyor varsa bir şey yapmadan direkt resmi açıyor. Yapmak istediğim şey mesela konu ve resimler silinirken olurda thumbnailler yanlışlıkla silinmezse thumbnail klasöründe kalmaya devam edecek. Aradığım şey thumbnail klasörünün içeriğini silmek. Klasörü silmek veya içerisindeki dosyayı silmek kolay ama bilmediğim isimlerdeki dosyaları nasıl sildireceğim sorun bu. Sizin konunuza rastladım dosyaları listeleme özelliği güzel fakat listeleme yapmadan içerisindeki dosyaları nasıl temizleyebilirim?

  23. Emra Can dedi ki:

    Size sorum şu olacak. Uzatı değil ama örnek olarak her kullanıcıya ait resimlerim var ve kullanıcı id si ile başlıyor. Örenk olarak 225555_ şeklinde başlıyor bunu nasıl silebilirim. bu yazıyla başlayan tüm dosyaları silmek istiyorum.

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

gecekule için bir cevap yazın Cevabı iptal et

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