kostenloser Webspace werbefrei: lima-city


Datei-counter soll included werden

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    fannyisfunny

    fannyisfunny hat kostenlosen Webspace.

    Hallo zusammen,

    ich stehe grad vor folgendem Problem: Ich hab eine "count.php" die in einem ordner "pics" liegt, wenn ich sie aufrufe zählt sie alle dateien und rechnet die gesamtdateigröße aus:

    (/pics/count.php)
    <?php
    
    /** #------------------------- Dateien zählen---------------------------- # **/
    
    $jpg_dateien = glob('*.jpg');
    $jpgcount = count( (is_array($jpg_dateien) ? $jpg_dateien : NULL) );
    
    $png_dateien = glob('*.png');
    $pngcount = count( (is_array($png_dateien) ? $png_dateien : NULL) );
    
    $gif_dateien = glob('*.gif');
    $gifcount = count( (is_array($gif_dateien) ? $gif_dateien : NULL) );
    
    $html_dateien = glob('*.html');
    $htmlcount = count( (is_array($html_dateien) ? $html_dateien : NULL) );
    
    /** #------------------------- Ordnergrösse ausrechnen---------------------------- # **/
    
    $handle=opendir ('.');
    
    $sum = 0;
    while (false !== ($file = readdir ($handle))) {
    //echo $file . " ".filesize($file) . "<br>";
    $sum += filesize($file);
    }
    closedir($handle);
    
    /** #------------------------- Byte umrechnen---------------------------- # **/
    
    function byte_ausrechnen($byte) {
        
        if($byte < 1024) {
            $ergebnis = round($byte, 2). ' Byte';
        }elseif($byte >= 1024 and $byte < pow(1024, 2)) {
            $ergebnis = round($byte/1024, 2).' KByte';
        }elseif($byte >= pow(1024, 2) and $byte < pow(1024, 3)) {
            $ergebnis = round($byte/pow(1024, 2), 2).' MByte';
        }elseif($byte >= pow(1024, 3) and $byte < pow(1024, 4)) {
            $ergebnis = round($byte/pow(1024, 3), 2).' GByte';
        }elseif($byte >= pow(1024, 4) and $byte < pow(1024, 5)) {
            $ergebnis = round($byte/pow(1024, 4), 2).' TByte';
        }elseif($byte >= pow(1024, 5) and $byte < pow(1024, 6)) {
            $ergebnis = round($byte/pow(1024, 5), 2).' PByte';
        }elseif($byte >= pow(1024, 6) and $byte < pow(1024, 7)) {
            $ergebnis = round($byte/pow(1024, 6), 2).' EByte';
        }
    
    return $ergebnis;
        
    }
    
    ?>


    Das funktioniert soweit auch einwandfrei. Nun include ich diese File in eine intern.php in einem anderem Verzeichnis. Dort möchte diese gezählten Werte aus der count.php ausgeben:

    /** #------------------------- Ausgeben ---------------------------- # **/
    
    //echo "JPG-Dateien: ".$jpgcount."<br>";
    //echo "PNG-Dateien: ".$pngcount."<br>";
    //echo "GIF-Dateien: ".$gifcount."<br>";
    //echo "HTML-Dateien: ".$htmlcount."<br>";
    //echo  "Gesamtgr&ouml;&szlig;e: ".byte_ausrechnen($sum);


    Jetzt zeigt er mir aber die Werte aus dem Ordner der intern.php an, nicht aus dem /pics Ordner..logisch..aber wie kann ich das verhindern? Bin für jede Hilfe dankbar

    Grüße, fannyisfunny
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi!

    Am Besten machst du das als Funktion:

    function count_files($pfad, &$gesamt)
    {
      $dir = dir($pfad);
      $files = array();
      while($v = $dir->read())
      {
        if(!is_dir($pfad.$v) && preg_match('/(.*).(jpg|png|gif|html)$/i', $v, $match))
        {
          $files[$match[2]][$v] = filesize($pfad.$v);
          $gesamt += $files[$match[2]][$v];
        }
      }
      $dir->close();
      
      return $files;
    }

    Ist nurn Beispiel. Hab nur gerad keine Zeit das zu testen.

    Hier mal nen kürzerer Code zum Byte umrechnen
    function byteConvert($bytes)
        {
            $s = array('B', 'Kb', 'MB', 'GB', 'TB', 'PB');
            $e = floor(log($bytes)/log(1024));
         
            return sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e))));
        }


    Beitrag zuletzt geändert: 24.5.2009 17:07:27 von zenks
  4. Autor dieses Themas

    fannyisfunny

    fannyisfunny hat kostenlosen Webspace.

    Hi,

    vielen Dank schonmal! Wenn ich also deine Funktion count_files nutze, muss ich nur noch$pfad angeben? Und die Ergebnise stehen in $filesize und $gesamt drinnen ? :confused:

    Grüße, fannyisfunny
  5. Nicht ganz ;).

    function byteConvert($bytes)
        {
            $s = array('B', 'Kb', 'MB', 'GB', 'TB', 'PB');
            $e = floor(log($bytes)/log(1024));
         
            return sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e))));
        }
    
    function count_files($pfad, &$gesamt)
    {
      $dir = dir($pfad);
      $files = array();
      while($v = $dir->read())
      {
        if(!is_dir($pfad.$v) && preg_match('/(.*).(jpg|png|gif|html)$/i', $v, $match))
        {
          $files[$match[2]][$v] = filesize($pfad.$v);
          $gesamt += $files[$match[2]][$v];
        }
      }
      $dir->close();
      
      $gesamt = byteConvert($gesamt);
    
      return $files;
    }
    
    
    $files = count_files('/weg/zum/ordner/', $ordnersize);
    
    print_r($files);
    
    echo $ordnersize;


    $files ist ein Array, welches dann zum Beispiel so ausishet:

    array('jpg' => array('toll.jpg' => 234, 'schlecht.jpg' => 436346))

    und $ordnersize ist dann die gesamte Ordnergröße

    Beitrag zuletzt geändert: 24.5.2009 18:13:25 von zenks
  6. Autor dieses Themas

    fannyisfunny

    fannyisfunny hat kostenlosen Webspace.

    Ah okey, nochmal danke, es scheint ein bisschn zu tun :thumb:

    Allerdings krieg ich damit jetzt folgendes ausgabe (korrekter pfad):

    Array ( [png] => Array ( [49805faa3d326.png] => 8752 [49806189ad178.png] => 8752 [49806e5f0a710.png] => 
    
    // geht dann  ne weile so ...]
    
    [4a1813eedff30.gif] => 44161 ) ) 207.63 MB


    Irgendwie noch nicht ganz das was ich gern hätte... Kannst du mir nochmal weiterhelfen :-)

    Grüße, fannyisfunny

    Beitrag zuletzt geändert: 24.5.2009 18:40:43 von fannyisfunny
  7. ähm. ICh dachte das wars was du wolltest ^^. Willst du jetzt genau wissen wieviele Dateien von welchem format oder wie?
  8. Autor dieses Themas

    fannyisfunny

    fannyisfunny hat kostenlosen Webspace.

    Genau.. will einfach vier so Vatiablen Dingens GIFs/PNGs/JPGs/HTMLs um die dann weiterverarbeiten zu können...
  9. Dann halt das:

    function count_files($pfad, &$gesamt)
    {
      $dir = dir($pfad);
      $files = array();
      while($v = $dir->read())
      {
        if(!is_dir($pfad.$v) && preg_match('/(.*).([a-z]*)$/i', $v, $match))
        {
          $files[$match[2]]++;
          $gesamt += filesize($pfad.$v);
        }
      }
      $dir->close();
      
      $gesamt = byteConvert($gesamt);
    
      return $files;
    }


    Beitrag zuletzt geändert: 24.5.2009 19:10:37 von zenks
  10. Autor dieses Themas

    fannyisfunny

    fannyisfunny hat kostenlosen Webspace.

    Dankeee.. Das Files ist jetzt ein Array und ich kann das beliebig machen welche Formate ich angezeigt haben möchte, hab ich das richtig verstanden? Wenn ja, dann müsste das doch so aussehen:

    echo $files['png'];


    Oder?

    Grüße
  11. oui, c'est ça. Geht jetzt mit allen Dateiformaten so.
  12. Autor dieses Themas

    fannyisfunny

    fannyisfunny hat kostenlosen Webspace.

    Nix tun Mr Franzose..

    <?phphttp://www.lima-city.de/#:slant:
    function byteConvert($bytes)
        {
            $s = array('B', 'Kb', 'MB', 'GB', 'TB', 'PB');
            $e = floor(log($bytes)/log(1024));
         
            return sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e))));
        }
    
    function count_files($pfad, &$gesamt)
    {
      $dir = dir($pfad);
      $files = array();
      while($v = $dir->read())
      {
        if(!is_dir($pfad.$v) && preg_match('/(.*).([a-z]*)$/i', $v, $match))
        {
          $files[$match[2]]++;
          $gesamt += filesize($pfad.$v);
        }
      }
      $dir->close();
      
      $gesamt = byteConvert($gesamt);
    
      return $files;
    }
    
    $files = count_files('../pics/', $ordnersize);
    
    
    echo $ordnersize;
    
    echo $files['html'];
    
    ?>


    Sei nochmal so nett.. wenn ich damit reich und mächtig werde hast du acuh was gut bei mir :)
  13. fannyisfunny schrieb:
    Nix tun Mr Franzose..

    Versteh ich nicht. Was kommt denn für eine Fehlermeldung? Poste mal das Ergebnis von print_r($files);. Oder was genau funktioniert nicht?

    Sei nochmal so nett.. wenn ich damit reich und mächtig werde hast du acuh was gut bei mir :)

    Oh vielen Dank xD.
  14. Autor dieses Themas

    fannyisfunny

    fannyisfunny hat kostenlosen Webspace.

    zenks schrieb:
    Versteh ich nicht. Was kommt denn für eine Fehlermeldung? Poste mal das Ergebnis von print_r($files);. Oder was genau funktioniert nicht?


    Mit
    echo $files['html'];

    gibt gar nichts aus. Mit

    print_r($files);
    gibt er

    Array ( [] => 786 ) aus.

    :rolleyes:
  15. Der Fehler liegt also bei der $match-Variable. Ich kann mir nur gerade nicht erklären wieso :(

    Probiers mal damit:

    <?php
    function byteConvert($bytes)
        {
            $s = array('B', 'Kb', 'MB', 'GB', 'TB', 'PB');
            $e = floor(log($bytes)/log(1024));
         
            return sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e))));
        }
    
    function count_files($pfad, &$gesamt)
    {
      $dir = dir($pfad);
      $files = array();
      while($v = $dir->read())
      {
        if(!is_dir($pfad.$v) && preg_match('/(.*)\.([a-z]*)$/i', $v, $match))
        {
          $files[$match[2]]++;
          $gesamt += filesize($pfad.$v);
        }
      }
      $dir->close();
      
      $gesamt = byteConvert($gesamt);
    
      return $files;
    }
    
    $files = count_files('../pics/', $ordnersize);
    
    
    echo $ordnersize;
    
    echo $files['html'];
    
    ?>


    Wenn das nicht geht poste mal was das ergibt:

    <?php
    function count_files($pfad, &$gesamt)
    {
      $dir = dir($pfad);
      $files = array();
      while($v = $dir->read())
      {
        if(!is_dir($pfad.$v) && preg_match('/(.*).([a-z]*)$/i', $v, $match))
        {
          print_r($match); die();
        }
      }
      $dir->close();
    }
    
    count_files('../pics/', $ordnersize);
    
    ?>
  16. Autor dieses Themas

    fannyisfunny

    fannyisfunny hat kostenlosen Webspace.

    zenks schrieb:

    Probiers mal damit:



    Hi,

    vielen Dank für deine Mühe, funktioniert jetzt einwandfrei! :prost:

    Grüße, fannyisfunny
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!