Avatar billede spidr Nybegynder
30. januar 2005 - 15:39 Der er 22 kommentarer og
1 løsning

Antal billeder, flash og film i en mapp

Hvordan kan jeg taelle antal billeder, film, og flash filer i en mappe?

så den skriver det sådan ud:

Billeder: 23423
Film: 234
flash: 2344

det skal også taelle i under mapper :D
Avatar billede cpfrande Nybegynder
30. januar 2005 - 15:53 #1
Halløjsa,

Du kan jo tage et kik på http://dk.php.net/manual/en/function.opendir.php

Det er en nyttig kommando, der kan bruges og give idéer til din lille kode.

Fortsat god søndag.

- Kristian
Avatar billede coderdk Praktikant
30. januar 2005 - 16:01 #2
function kigFolder( $folder )
{
  if ( $dh = opendir( $folder ) )
  {
      while ( $file = readdir( $dh ) )
      {
          $filen = $folder . '/' . $file;
          if ( is_dir( $filen ) && $file != '.' && $file != '..' )
          {
            kigFolder( $filen );
          }
          else
          {
            if ( is_file( $filen ) )
            {
                // undersøg filerne her
            }
          }
      }
      closedir( $dh );
  }
}

kigFolder( '/en/mappe' );
Avatar billede spidr Nybegynder
30. januar 2005 - 16:14 #3
heh tak coder, men det kunne jeg egentligt godt have klartet, mere det at taelle filer af en bestemt slags der halter :S
asså finde ud af hvor mange .jpg og .swf filer der er :)
Avatar billede coderdk Praktikant
30. januar 2005 - 16:15 #4
eh? det er da lettere end det jeg lavede ;)
$ext = substr( $fil, -3 );
if ( in_array( $ext, array( 'jpg', 'gif', 'png') )
{
  // Det er et billede
}

osv
Avatar billede coderdk Praktikant
30. januar 2005 - 16:16 #5
$file eller $filen skulle det ha' været ;P
Avatar billede spidr Nybegynder
30. januar 2005 - 16:17 #6
jamen det du havde, har jeg leget med en del før :)
Avatar billede spidr Nybegynder
30. januar 2005 - 16:17 #7
men den taeller det jo ikke :S
Avatar billede coderdk Praktikant
30. januar 2005 - 16:21 #8
function kigFolder( $folder )
{
  global $billeder, $film, $flash;
  if ( $dh = opendir( $folder ) )
  {
      while ( $file = readdir( $dh ) )
      {
          $filen = $folder . '/' . $file;
          if ( is_dir( $filen ) && $file != '.' && $file != '..' )
          {
            kigFolder( $filen );
          }
          else
          {
            if ( is_file( $filen ) )
            {
                $ext = substr( $fil, -3 );
                if ( in_array( $ext, array( 'jpg', 'gif', 'png') )
                {
                  $billeder++;
                }
                elseif ( $ext == 'swf' )
                {
                  $flash++;
                }
                elseif ( in_array( $ext, array( 'avi', 'mpg', 'mov') )
                {
                  $film++;
                }
            }
          }
      }
      closedir( $dh );
  }
}

kigFolder( '/en/mappe' );
Avatar billede coderdk Praktikant
30. januar 2005 - 16:21 #9
Og et svar
Avatar billede spidr Nybegynder
30. januar 2005 - 16:38 #10
Parse error: parse error, unexpected '{' in /customers/goog.dk/goog.dk/httpd.www/pics/index.php on line 39
kan ikke lige finde det :S
Avatar billede spidr Nybegynder
30. januar 2005 - 16:46 #11
fandt ud af det :D
Avatar billede coderdk Praktikant
30. januar 2005 - 16:48 #12
heh ja der manglede vist lige et par )'er
Avatar billede coderdk Praktikant
30. januar 2005 - 16:48 #13
Den korrekte skulle vist være:

    function kigFolder( $folder )
    {
        global $billeder, $film, $flash;
        if ( $dh = opendir( $folder ) )
        {
            while ( $file = readdir( $dh ) )
            {
                $filen = $folder . '/' . $file;
                if ( is_dir( $filen ) && $file != '.' && $file != '..' )
                {
                    kigFolder( $filen );
                }
                else
                {
                    if ( is_file( $filen ) )
                    {
                        $ext = substr( $fil, -3 );
                        if ( in_array( $ext, array( 'jpg', 'gif', 'png') ) )
                        {
                            $billeder++;
                        }
                        elseif ( $ext == 'swf' )
                        {
                            $flash++;
                        }
                        elseif ( in_array( $ext, array( 'avi', 'mpg', 'mov') ) )
                        {
                            $film++;
                        }
                    }
                }
            }
            closedir( $dh );
        }
    }

    kigFolder( '/en/mappe' );
Avatar billede spidr Nybegynder
30. januar 2005 - 16:57 #14
Hvaså, hvis jeg il have den til at ignoere mapper med navnet small?

Ellers super fedt :D
har aendret den tiL:


<?php
$billeder = 0;
$flash = 0;
$film = 0;
function kigFolder( $folder )
{
  global $billeder, $film, $flash;
  if ( $dh = opendir( $folder ) )
  {
      while ( $file = readdir( $dh ) )
      {
          $filen = $folder . '/' . $file;
          if ( is_dir( $filen ) && $file != '.' && $file != '..' )
          {
            kigFolder( $filen );
          }
          else
          {
            if ( is_file( $filen ) )
            {
                $ext = substr( $filen, -3 );
                if ( in_array( $ext, array( 'jpg', 'gif', 'png') ) )
                {
                  $billeder ++;
                }
                elseif ( $ext == 'swf' )
                {
                  $flash ++;
                }
                elseif ( in_array( $ext, array( 'avi', 'mpg', 'mov') ) )
                {
                $film ++;
                }
            }
          }
      }
      closedir( $dh );
  }
}

kigFolder( '../pics/' );
print "Pics: $billeder <br> Flash: $flash <br> Movies: $film";
?>
Avatar billede spidr Nybegynder
30. januar 2005 - 16:57 #15
kan den taelle mapper?
Avatar billede coderdk Praktikant
30. januar 2005 - 17:03 #16
tjah tilføj en global variabel og tæl op her:
          if ( is_dir( $filen ) && $file != '.' && $file != '..' )
          {
            kigFolder( $filen );
          }
Avatar billede spidr Nybegynder
30. januar 2005 - 17:06 #17
kunne man ignorere mapper med navnet small?
Avatar billede spidr Nybegynder
30. januar 2005 - 17:06 #18
fik ik helt fat i den der :S
Avatar billede coderdk Praktikant
30. januar 2005 - 17:08 #19
<?php
$billeder = 0;
$flash = 0;
$film = 0;
$foldere = 0;
function kigFolder( $folder )
{
  global $billeder, $film, $flash, $foldere;
  if ( $dh = opendir( $folder ) )
  {
      while ( $file = readdir( $dh ) )
      {
          $filen = $folder . '/' . $file;
          if ( is_dir( $filen ) && $file != '.' && $file != '..' )
          {
            if ( $file != 'small' )
            {
              $foldere++;
              kigFolder( $filen );
            }
          }
          else
          {
            if ( is_file( $filen ) )
            {
                $ext = substr( $filen, -3 );
                if ( in_array( $ext, array( 'jpg', 'gif', 'png') ) )
                {
                  $billeder ++;
                }
                elseif ( $ext == 'swf' )
                {
                  $flash ++;
                }
                elseif ( in_array( $ext, array( 'avi', 'mpg', 'mov') ) )
                {
                $film ++;
                }
            }
          }
      }
      closedir( $dh );
  }
}

kigFolder( '../pics/' );
print "Pics: $billeder <br> Flash: $flash <br> Movies: $film";
?>
Avatar billede spidr Nybegynder
30. januar 2005 - 17:11 #20
ja tak, det var bedre :D
Tusind tak :D
Kunne man evt. taelle antal mapper også`? Og igen ignoerere small?
Avatar billede coderdk Praktikant
30. januar 2005 - 17:12 #21
Det gør den
Avatar billede spidr Nybegynder
30. januar 2005 - 17:13 #22
Ah det havde du lavet, undskyd jeg ikke ku se det :D tusind tusidn tak :D
Avatar billede coderdk Praktikant
30. januar 2005 - 17:13 #23
:)
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