Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.
Aktivasyon mailiniz gelmediyse buraya tıklayın.
09, 2008, 02:30:49 am
42744 Mesaj 8090 Konu Gönderen: 17931 Üye
Son üye: medist
Turk-Php.Com Forum  |  Yardım Forumları  |  PHP Yardım Forumu  |  Tüm Alt Dizinlerler Birlikte Dosya Sayısını Bulma « önceki sonraki »
Sayfa: [1] Yazdır
Yazan Konu: Tüm Alt Dizinlerler Birlikte Dosya Sayısını Bulma  (Okunma Sayısı 797 defa)
samandereli
Yeni Kullanıcılar
*
Offline Offline

Mesaj Sayısı: 6


Üyelik Bilgileri
Tüm Alt Dizinlerler Birlikte Dosya Sayısını Bulma
« : 02, 2006, 09:05:09 am »

Öncelikle herkese bol hatasız kodlar diliyorum.

Benim derdim şu: sitemde "depo2" adında bir klasörüm var ve bu klasörde yüzlerce alt klasör ve binlerce dosya mevcut. Bazı dosyalar bir alt klasörde, bazıları onun altındakilerde. Ben, "depo2" klasörünün altındaki tüm dosyaların (klasörlerin değil) sayısını veren bir kod arıyorum. Forumda bununla ilgili bir kod var ama onda da alt klasörlerle ilgili bir sorun var. O kod şöyle idi:

<?php
// Öncelikle dizin adını atayacağımız değişkenimizi oluşturalım.
$dizin = "depo2";
// Burada da dizinimizi acıyoruz.
$dir = opendir($dizin);
while($dosya = readdir($dir)) {
   // Döngümüzü hazırladık şimdi dosya olup olmadıgını is_file deyimi ile kontrol edelim
   if(is_file($dizin."../../../".$dosya)) { Echo "Dosya : ".$dosya."
"; }
} // while bitti.
?>

Yardımlarınız için şimdiden teşekkür ederim.
Logged
obareey
PHP Stajyeri
**
Offline Offline

Mesaj Sayısı: 246



Üyelik Bilgileri
Ynt: Tüm Alt Dizinlerler Birlikte Dosya Sayısını Bulma
« Yanıtla #1 : 03, 2006, 08:57:16 am »

çalışır mı bilmem ama bana mantıklı gibi geldi. çalışırsa tabi ki daha da geliştirilebilir.

Kod:
<?php

$dizin 
"depo2";
function 
oku(){
$dir opendir($dizin);
while(
$dosya readdir($dir)) {
   
// Döngümüzü hazırladık şimdi dosya olup olmadıgını is_file deyimi ile kontrol edelim
if(is_dir($dosya)){ //klasörse yine içini açıyoruz.
echo "<b>Klasör: ".$dosya."</b><br>";
$dizin=$dosya;
return 
oku(); }
   else { Echo 
"Dosya : ".$dosya."<br>"; }
}
// while bitti.
return oku();
?>
Logged
samandereli
Yeni Kullanıcılar
*
Offline Offline

Mesaj Sayısı: 6


Üyelik Bilgileri
Ynt: Tüm Alt Dizinlerler Birlikte Dosya Sayısını Bulma
« Yanıtla #2 : 03, 2006, 02:17:11 pm »

malesef çalışmadı Huh
Logged
obareey
PHP Stajyeri
**
Offline Offline

Mesaj Sayısı: 246



Üyelik Bilgileri
Ynt: Tüm Alt Dizinlerler Birlikte Dosya Sayısını Bulma
« Yanıtla #3 : 04, 2006, 03:02:10 am »

üzerinde biraz çalışınca oldu. böyle bir fonksiyon yazdım.

Kod:
<?php
function oku($dizin) {
for(
$i=0;$i<substr_count($dizin,"/");$i++){ 
$bosluk.="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";}//dizinler daha hoş gözüksün ;)
$klasor[0]=$dizin;
$dir opendir($dizin);
$i=0;//döngünün içini sayacağız.
while(false !== ($dosya readdir($dir))) {
if(
$dosya=='.' || $dosya=='..'){//tüm dizinlerin içinde var. neden bilmem
continue;}
$i++;
$klasor[1]=$dosya;
$dizin=join($klasor,"/");
if(
is_dir($dizin)){ //klasörse yine içini açıyoruz.
echo $bosluk."<b>".$dizin."</b><br>";
oku($dizin);
}
else { echo 
$bosluk.$dosya."<br>"; }
}
// while bitti.
if($i==0){
echo 
$bosluk."<i>Dizin boş</i><br>";}
}
?>

bunu daha sonra herhangi bir yerde çağırabilirsin.
Kod:
<?php oku(depo2);?>
bu arada php.net ten bir şey öğrendim:
Alıntı
<?php
// Note that !== did not exist until 4.0.0-RC2

if ($handle = opendir('/path/to/files')) {
   echo "Directory handle: $handle\n";
   echo "Files:\n";

   /* This is the correct way to loop over the directory. */
   while (false !== ($file = readdir($handle))) {
       echo "$file\n";
   }

   /* This is the WRONG way to loop over the directory. */
   while ($file = readdir($handle)) {
       echo "$file\n";
   }

   closedir($handle);
}
?>

iyi çalışmalar...
Logged
samandereli
Yeni Kullanıcılar
*
Offline Offline

Mesaj Sayısı: 6


Üyelik Bilgileri
Ynt: Tüm Alt Dizinlerler Birlikte Dosya Sayısını Bulma
« Yanıtla #4 : 04, 2006, 12:05:54 pm »

Çok güzel düşünülmüş bir kod. Gerçekten klasörlerin altını gördüm. Ama benim istediğim bu dosyaları listelemek değil sadece kaç adet dosya var bunun sayısını bulmak. Herhalde bir satır ile çözülecek hale geldi. Kodların içindeki $i değişkenini ekrana bastırsam belki olacak ama bunu da yapmıyor.
Logged
aziz
PHP Programcısı
****
Offline Offline

Mesaj Sayısı: 940



Üyelik Bilgileri
Ynt: Tüm Alt Dizinlerler Birlikte Dosya Sayısını Bulma
« Yanıtla #5 : 04, 2006, 12:11:34 pm »

@ obareey ;

Alıntı
if($dosya=='.' || $dosya=='..'){//tüm dizinlerin içinde var. neden bilmem

Kod:
.
  Bulunulan klasörü simgeler
Kod:
..
Bir üst klasörü simgeler
Yani bunlar dizine yol gösteriyor gibi düşünebilirsiniz.
Nasıl yeri gelince "../" bazen "../../" kullanıyoruz, işte bu yüzden Smiley

İyi Çalışmalar...
Logged

Jabber:
xmpp:aziz@member.turk-php.com
Alihan ÇETİN
www.azizce.com
firenkli
Yeni Kullanıcılar
*
Offline Offline

Mesaj Sayısı: 1


Üyelik Bilgileri
Ynt: Tüm Alt Dizinlerler Birlikte Dosya Sayısını Bulma
« Yanıtla #6 : 30, 2006, 03:39:52 am »

burdaki bir kaç kodu denedim. Boş bir sayfa ile karşılaştım... Neden olabilir ?

ikinci olarak apache nin autoindex gibi dizinleri dosyaları gösteren bir index.php yapmak istiyorum. Hazır kod var mı ? birde sıfırdan kodlamak istiyorum, php'nin hangi başlığı/başlıkları altından öğrenip böyle birşey yapabilirim.

Teşekkurler.
« Son Düzenleme: 30, 2006, 03:46:16 am Gönderen: firenkli » Logged
obareey
PHP Stajyeri
**
Offline Offline

Mesaj Sayısı: 246



Üyelik Bilgileri
Ynt: Tüm Alt Dizinlerler Birlikte Dosya Sayısını Bulma
« Yanıtla #7 : 04, 2006, 04:37:32 pm »

Dizin boş yazısı da mı çıkmıyor? belki diğer kodlarında bi sorun vardır onlara bi daha bak çünkü bende çalışıyor kodlar. ikinci yapmak istediğini anlamadım. dizinleri ve dosyaları otomatik gösterecek? hatta sonra onları yönetecek bi panel? gibi bişeyler mi yapmak istiyosun. biraz daha açarsan daha fazla yardımcı olabiliriz.
iyi çalışmalar...
Logged
requiem
PHP Stajyeri
**
Offline Offline

Mesaj Sayısı: 194

oop rules the world


Üyelik Bilgileri
Ynt: Tüm Alt Dizinlerler Birlikte Dosya Sayısını Bulma
« Yanıtla #8 : 04, 2006, 06:47:17 pm »

merhabalar,belki şu kod işini görebilir,
Kod:
<?php
function  tara($dirz){
$sayi=0;
$dir=scandir($dirz);

foreach (
$dir as $key=>$val) {
if($val!="."&&$val!=".."&&is_dir($dirz."/".$val)) {
$sayi += tara($dirz."/".$val."/");
} else if(is_file($dirz."/".$val) && !is_dir($dirz."/".$val)) {
$sayi++;
}
}
return 
$sayi;
}
$toplamDosyaSayisi=tara(".");
echo 
$toplamDosyaSayisi;
?>

"." nokta yerine geçerli bir klasör adı yazmanız yeterli.
Logged
Sayfa: [1] Yazdır 
« önceki sonraki »
Gitmek istediğiniz yer:  


Turk-Php.Com Forum | SMF Forum Software © 2005, Simple Machines LLC. All Rights Reserved.