Avatar billede saudoo Nybegynder
09. marts 2004 - 19:15 Der er 19 kommentarer og
1 løsning

Tælle filer i en mappe, incl filerne i undermapperne

Hej exp,
Hvordan kan man tælle filer fra en mappe, hvor man også skal tælle filerne i undermapperne med?

Jakob
Funsense.dk
Avatar billede detox Nybegynder
09. marts 2004 - 19:40 #1
Fx:

<?
$dir = "sti/til/mappe"; // Sti og navn på mappe
$c = 0;
echo taelFiler($dir);

function taelFiler($dir) {
    global $c;
    $d = dir($dir);
    while (false !== ($entry = $d->read())) {
        if ($entry != '.' && $entry != '..') {
            if (is_dir($dir."/".$entry)) taelFiler($dir."/".$entry);
            else $c++;
        }
    }
    $d->close();
    return $c;
}
?>
Avatar billede rasmusbg Nybegynder
09. marts 2004 - 19:41 #2
Her er en rekursiv metode, der tæller alle filer i et mappehierarki:

function traverse($dir_path) {
    $files = 0;
    $handle = opendir($dir_path);
    while (false !== ($file = readdir($handle))) {
        if (($file !== '.') && ($file !== '..') && is_dir($dir_path.'/'.$file)) {
            files += traverse($dir_path.'/'.$file);
        } else if (($file !== '.') && ($file !== '..')) {
            $files++;
        }
    }
    return $files;
}
Avatar billede rasmusbg Nybegynder
09. marts 2004 - 19:44 #3
Okay burde lige tilføje

$handle->close();

før
return $files;
Avatar billede saudoo Nybegynder
11. marts 2004 - 17:35 #4
...
Undskyld, jeg havde kort, glemt at jeg havde oprettet dette spg.
Jeg kikker lige på dem, og melder tilbage. :P
Avatar billede saudoo Nybegynder
11. marts 2004 - 17:39 #5
Detox:
Jeg har fx. 10 mapper. Hvordan læser jeg i dem alle?

Rasmusbg:
Hvordan kan man sætte en url, et par niveauer oppe? ^o)
Avatar billede rasmusbg Nybegynder
11. marts 2004 - 17:43 #6
Saudoo > Jeg er ikke helt sikker på, jeg forstår, hvad du mener.
Avatar billede detox Nybegynder
11. marts 2004 - 18:00 #7
Den jeg har lavet tæller alle filerne i mappen samt undermapper.
Avatar billede saudoo Nybegynder
11. marts 2004 - 22:23 #8
rasmusbg,

nej det var også formuleret forkert.
Hvordan sætter jeg en kilde. Eller en url, til den mappe den læser fra?
Avatar billede rasmusbg Nybegynder
11. marts 2004 - 22:27 #9
<?php
...
function traverse($dir_path) {
    $files = 0;
    $handle = opendir($dir_path);
    while (false !== ($file = readdir($handle))) {
        if (($file !== '.') && ($file !== '..') && is_dir($dir_path.'/'.$file)) {
            files += traverse($dir_path.'/'.$file);
        } else if (($file !== '.') && ($file !== '..')) {
            $files++;
        }
    }
    $handle->close();
    return $files;
}

echo traverse('sti-til-mappe');
?>
Avatar billede saudoo Nybegynder
11. marts 2004 - 22:29 #10
Detox,

Jeg skal bruge det på denne måde..

Billeder: [antal]
Filmklip: [antal]
osv.

Hvordan skal jeg stille scriptet op, hvis dette skulle være muligt?
Avatar billede saudoo Nybegynder
11. marts 2004 - 22:29 #11
også til dig rasmusbg :P
Avatar billede saudoo Nybegynder
11. marts 2004 - 22:31 #12
Altså, for at tage det på det rene.. Jeg har sat et stykke tekst foran scriptet, men der skal være ca. 5 steder hvorfra den skal finde antal filer... ",
Avatar billede rasmusbg Nybegynder
11. marts 2004 - 22:32 #13
<?php
function traverse($dir_path) {
    $files = 0;
    $handle = opendir($dir_path);
    while (false !== ($file = readdir($handle))) {
        if (($file !== '.') && ($file !== '..') && is_dir($dir_path.'/'.$file)) {
            files += traverse($dir_path.'/'.$file);
        } else if (($file !== '.') && ($file !== '..')) {
            $files++;
        }
    }
    $handle->close();
    return $files;
}

echo 'Billeder:['.traverse('sti-til-mappe-med-billeder').']<br>';
echo 'Filmklip:['.traverse('sti-til-mappe-med-filmklip').']';
?>
Avatar billede rasmusbg Nybegynder
11. marts 2004 - 22:33 #14
og for hver linie med antal filer tilføjer du bare en echo...
Avatar billede saudoo Nybegynder
12. marts 2004 - 13:50 #15
rasmusbg,

Det script du har givet mig, retunerer en blank side.
Avatar billede rasmusbg Nybegynder
12. marts 2004 - 18:48 #16
Jeg fandt et par småfejl, og så skal det være stier til lokale mapper, du bruger, når du kalder funktionen.

<?php
function traverse($dir_path) {
    $files = 0;
    $handle = opendir($dir_path);
    while (false !== ($file = readdir($handle))) {
        if (($file !== '.') && ($file !== '..') && is_dir($dir_path.'/'.$file)) {
            $files += traverse($dir_path.'/'.$file);
        } else if (($file !== '.') && ($file !== '..')) {
            $files++;
        }
    }
    return $files;
}

echo 'Billeder:['.traverse('sti-til-billeder').']<br>';
echo 'Filmklip:['.traverse('sti-til-filmklip').']';
?>
Avatar billede saudoo Nybegynder
12. marts 2004 - 20:47 #17
Det er sq smukt.

Smidt et svar.
Avatar billede rasmusbg Nybegynder
12. marts 2004 - 20:49 #18
Svar :o)
Avatar billede saudoo Nybegynder
13. marts 2004 - 23:49 #19
og tak for hjælpen.. :P
Avatar billede rasmusbg Nybegynder
13. marts 2004 - 23:51 #20
Det var så lidt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester