Datein Zählen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datein Zählen

    Guten Tag,
    Ich habe mich mal mit ein Script beschäftigt ,komme aber einfach nicht weiter.
    Mein Momentanes Script sieht so aus:
    <table>
    <tr>
    <td>Name</td>
    </tr>
    <?php
    $verzeichnis=dir("/web/diskfree1.0/");
    while($eintrag=$verzeichnis->read())
    if(is_file($eintrag))echo "</tr><td>$eintrag</td><tr>";
    $verzeichnis->close();
    ?>
    </table>

    So zählt der Rechner mit diesem Script alle Datein auf die sich im Ordner befinden.Jetzt möchte ich aber nicht nur das er die Datein aufzählt ,sondern er soll auch noch den while zählen (count())
    So das er mir anzeigt ,wie viele Datein er gezählt hat (wenn es mal etwas mehr werden)
    und am besten noch anzeigen welche Endung das hat und die Einzelne größe der Datein.
    Ich habe so vieles mit count() str_ und so weiter ausprobiert aber irgentwie zählt er dan immer das flasche ,dan steht dort immer eine 1.
    Könnt ihr mir helfen?
    mfg Chris
    PS:Reicht aber auch schon wenn ihr nur 1ns von den Sachen wisst die ich hier aufgezählt habe
    Achtung ich bin eine wandelne Frage

  • #2
    $int_counter = 0;

    und in der while-schleife per ++ inkrementieren. -> $int_counter++;
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Jup

      Vielen Dank,
      aber irgentwie zählt der komisch ,ich habe es jetzt eingefügt und eigentlich funktioniert das gut aber irgentwie zählt der falsch.
      Ich habe 8 Objekte und er zählt 10 Objekte warum das den ?
      Kannst ansonsten mal selber anschauen:
      http://www.inuyasha-anime.de/diskfree1.0/ordner.php
      mfg Chris
      PS:Woran liegt es und kann man das auch mit den Endung machen oder weißt du keine Lösung ?
      Achtung ich bin eine wandelne Frage

      Kommentar


      • #4
        vermutlich weil er bei . und .. noch mitzählt?
        Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
        var_dump(), print_r(), debug_backtrace und echo.
        Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
        Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
        Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

        Kommentar


        • #5
          und was ist mit den Endungen

          So jetzt habe ich einfach den Startwert auf -2 gesetzt und jetzt funktioniert es.
          Kann man das jetzt auch noch irgentwie so machen das er von jeder einzelnen Datei die größe und Endung (.gif) anzeigt?
          mfg Chris
          Achtung ich bin eine wandelne Frage

          Kommentar


          • #6
            Re: und was ist mit den Endungen

            Original geschrieben von Inuyasha
            So jetzt habe ich einfach den Startwert auf -2 gesetzt und jetzt funktioniert es.
            Kann man das jetzt auch noch irgentwie so machen das er von jeder einzelnen Datei die größe und Endung (.gif) anzeigt?
            mfg Chris
            filesize und substr

            gruß
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              Bist du sauer ?

              Bist du sauer ?
              Habe ich was falsch gemacht ?
              Das mit filesize hätte ich auch noch gekonnt.
              Bei mir ist ehr das problem ,das ich überhaubt nicht weiß wo ich das mit filesize einbinden soll.
              mfg Chris
              Achtung ich bin eine wandelne Frage

              Kommentar


              • #8
                Re: Bist du sauer ?

                Original geschrieben von Inuyasha
                Bist du sauer ?
                Wie kommst du darauf?
                Kropff hat dir doch kurz und präsize geantwortet.
                Das mit filesize hätte ich auch noch gekonnt.
                Wieso fragst du dann?
                Bei mir ist ehr das problem ,das ich überhaubt nicht weiß wo ich das mit filesize einbinden soll.
                Also kannst du es doch nicht.

                Wie wär's, wenn du mal selber nachdenkst, wo du filesize vielleicht am besten einbinden kannst?
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Jup

                  Okay.... Denke nach ah jetzt habe ich es:
                  So funtkioniert es:

                  <?php
                  $verzeichnis=dir("/web/diskfree1.0/");
                  while($eintrag=$verzeichnis->read())
                  echo "".filesize($eintrag)."<br>";
                  $verzeichnis->close();
                  ?>

                  Leider hat diese Sachen einen Hacken.
                  Mit dem Zählen ...Am anfang zählt der ja die Punkte mit !!
                  Somit habe ich mehr byts angaben als datein.
                  Mit dem zählen der Datei konnte ich das noch herauszögern ,das er eben bei -3 anfängt aber hier kann ich das nicht.

                  2: Das mit substr funtkioniert leider nicht:

                  So sieht das dann aus:

                  http://www.inuyasha-anime.de/diskfree1.0/ordner.php

                  mfg Chris
                  Achtung ich bin eine wandelne Frage

                  Kommentar


                  • #10
                    Re: Jup

                    Original geschrieben von Inuyasha
                    Leider hat diese Sachen einen Hacken.
                    Mit dem Zählen ...Am anfang zählt der ja die Punkte mit !!
                    Somit habe ich mehr byts angaben als datein.
                    Dann lasse den Unsinn, den Zähler mit einem negativen Stand starten zu lassen.
                    Frage stattdessen in deiner Schleife ab, ob die aktuelle "Datei" den Namen '.' oder '..' hat - und falls ja, ignoriere sie.
                    2: Das mit substr funtkioniert leider nicht
                    Das ist keine brauchbare Fehlerbeschreibung.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      So ?

                      Mir fällt keine andere Lösung als diese ein:
                      <?php
                      $ordner = ".";
                      $dir = opendir($ordner);
                      while ($datei = readdir($dir))
                      {
                      if (($datei != ".") && ($datei != ".."))
                      {
                      if (in_array(substr($datei, -3), $endung))
                      { $dateien[] = filesize($datei); }
                      }
                      }

                      closedir($dir);
                      ?>

                      Leider zählt der trotzdem von Forne und ich glaube das script ist auch nicht ganz richtig.

                      Und so sieht das script aus das die Endungen zeigen soll aber nur fehlermeldungen macht:
                      <?php
                      $verzeichnis=dir("/web/diskfree1.0/");
                      while($eintrag=$verzeichnis->read())
                      echo "".substr($eintrag)."<br>";
                      $verzeichnis->close();
                      ?>
                      mfg Chris
                      Achtung ich bin eine wandelne Frage

                      Kommentar


                      • #12
                        Re: So ?

                        Original geschrieben von Inuyasha
                        Und so sieht das script aus das die Endungen zeigen soll aber nur fehlermeldungen macht
                        Kein Wunder, wenn du Funktionen vollkommen unsinnig einsetzt.
                        RTFM - lies erst mal im Manual nach, welche Parameter Funktionen wie substr erwarten.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Hilfe

                          Kannst du dir das script nochmal anschauen:
                          <?php
                          $ordner = ".";
                          $dir = opendir($ordner);
                          while ($datei = readdir($dir))
                          {
                          if (($datei != ".") && ($datei != ".."))
                          {
                          if (in_array(substr($datei, -3)))
                          { $dateien[] = $datei; }
                          }
                          }

                          closedir($dir);

                          if ($anzahl != 0)
                          {
                          sort($dateien);
                          for($x=0; $x<$anzahl; $x++)
                          { echo "".filesize($dateien[$x])."<br>"; }
                          }
                          echo "<hr>";
                          ?>

                          Das script verursacht einen Fehler ,der lautet :
                          Warning: Wrong parameter count for in_array() in /web/diskfree1.0/ordner.php on line 51

                          Und trotzdem gibt er alle richtigen byts werte aus obwohl da ein fehler drine ist... Wo ist der fehler in Array ?
                          mfg Chris
                          PS:Schaue es dir ansonsten nochmal an
                          http://www.inuyasha-anime.de/diskfree1.0/ordner.php
                          Achtung ich bin eine wandelne Frage

                          Kommentar


                          • #14
                            Ich hab zwar nicht die meiste Ahnung, aber meines Erachtens nach ist $datei ein array.

                            while ($datei = readdir($dir))

                            was bedeutet, dass $datei sowieso weder . noch .. sein kann. $datei[0] könnte ein Punkt sein, aber du hast ja keinen Schlüssel angegeben. Wenn ich damit richtig liege, kann

                            if (in_array(substr($datei, -3)))

                            auch nicht funktionieren, da du zuerst die letzten 3 Stellen eines arrays abschneidest und desweiteren kein array angibst.

                            if (in_array(substr($datei[0], -3), $datei))

                            müsste demnach gehn - wenn meine Theorie bisher stimmt. Aber dann wiederum dürfte dein if niemals true werden können

                            Korrigier mich bitte einer, wenn ich Mist geschrieben habe.

                            Kommentar


                            • #15
                              Nur mit PHP 5
                              PHP-Code:
                              <?php
                              class FilterNotDot extends FilterIterator
                              {
                                      public function 
                              __construct(DirectoryIterator $dir)
                                      {
                                              
                              parent::__construct($dir);
                                      }

                                      public function 
                              accept()
                                      {
                                          return !
                              $this->current()->isDot();
                                      }
                              }


                              class 
                              Directory_Container implements IteratorAggregate
                              {
                                  private 
                              $_totalSize;
                                  private 
                              $_totalFiles;
                                  protected 
                              $dirIter;

                                  function 
                              __construct($dir null)
                                  {
                                      if (
                              is_null($dir)) {
                                          
                              $dir '.' DIRECTORY_SEPARATOR;
                                      }

                                      
                              $this->dirIter = new FilterNotDot(new DirectoryIterator($dir));
                                      
                                      
                              $this->_totalSize 0;
                                      
                              $this->_totalFiles 0;

                                      foreach (
                              $this->dirIter as $file) {
                                          
                              $this->_totalSize += $file->getSize();
                                          ++
                              $this->_totalFiles;
                                      }
                                  }
                                  
                                  function 
                              totalSize()
                                  {
                                      return (int) 
                              $this->_totalSize;
                                  }
                                  
                                  function 
                              totalFiles()
                                  {
                                      return (int) 
                              $this->_totalFiles;
                                  }
                                  
                                  function 
                              getIterator()
                                  {
                                      return 
                              $this->dirIter;
                                  }
                              }

                              try {
                                      
                              $dir = new Directory_Container(new DirectoryIterator('./'));

                                      
                              printf('Found %s files %s'$dir->totalFiles(), PHP_EOL);
                                      
                              printf('Total size %s bytes %s'$dir->totalSize(), PHP_EOL);

                                      
                              printf('%s %s',  str_repeat('#'50), PHP_EOL);

                                      foreach (
                              $dir as $file) {
                                          
                              printf('%s is as %s %s'$file$file->getType(), PHP_EOL);
                                      }

                              } catch (
                              Exception $e) {
                                      
                              printf('Error: %s %s'$e->getMessage(), PHP_EOL);
                              }
                              ?>
                              Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
                              PHP Sicherheit
                              PHPUnit[1-2]
                              Professionelle Softwareentwicklung mit PHP 5
                              Professionelle PHP 5-Programmierung

                              Kommentar

                              Lädt...
                              X