Last Update

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

  • #16
    OffTopic:
    bitte öffne mal das fenster, da steht einer, der schreit abwechselnd rekursion und is_dir(), ich kanns bis hier hören!
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #17
      also ich hab in DIESEM thread genau das gefunden was ich suche, das ganze rekursiv. Also ich habe es hiermit versucht:

      PHP-Code:
      <?php

      GetDirArray
      (".");



      // Ausgabe von $dir

      for($i=0;$i<count($dir);$i++) {

          echo 
      "$dir[$i]<br>";

      }





      function 
      GetDirArray($sPath)

      {

          global 
      $dir// ARRAY $DIR MUSS GLOBAL SEIN

          //Load Directory Into Array

          
      $handle=opendir($sPath);

          while (
      $file readdir($handle))

          {

                  
      $retVal[count($retVal)] = $file;

          }

          
      //Clean up and sort

          
      closedir($handle);

          
      sort($retVal);

          
      //return $retVal;



          
      while (list($key$val) = each($retVal))

          {

              if (
      $val != "." && $val != "..")

              {

                      
      $path str_replace("//","/",$sPath.$val);

                      
      $dir[] = $path// SPEICHERUNG IM ARRAY $DIR

                      
      if (is_dir($sPath.$val))

                      {

                          
      GetDirArray($sPath.$val."/");

                      }

                  }

          }

      }

      ?>
      nur er "steigt" nicht die unterverzeichnisse herrab, sondern zeigt mir nur die verzeichnissnamen an, und nicht den INhalt. Praktisch genauso wie das script, was ich oben selber gemacht habe.

      Kommentar


      • #18
        ok, vergesst das von voher. Ich hab mir nun diese Rekursion selber geschriben:

        PHP-Code:
        <?PHP

        function get($verzeichniss)
        {

        $verz=opendir ($verzeichniss);

        while (
        $file readdir ($verz)) {

            if ((
        $file == ".") OR ($file == ".."))

                {

                }

            else

                {
                if (
        is_dir($file) == true)
                    {
                        
        get($file);
                    }
                else
                    {
                          echo(
        filemtime($file));

                          echo(
        $file);

                        echo(
        "<br><br>");
                    }
            }

        }

        closedir($verz); 
        }
        get(".");
        ?>
        Das funzt alles super, nur er gibt immer bei filemtime() nen Fehler. Ist ja auch ganz logisch, wenn er schon ein verzeichniss runtergegangen ist, findet er diese Datei ja nicht im aktuellen ordner. (also der Fehöler ist "no such file or directory) Also: Ich müsste bei filemtime irgendwo noch einen parameter angeben können. Nicht nur den dateinamen, sondern auch den ordner, in dem die Datei liegt. Geht das?
        Also bei den Dateien, die im selben ordner wie das scriipt liegen gehts. Bei den anderen gibt es oben genannten fehler

        Kommentar


        • #19
          logisch! setzt du halt statt datei.php mal ordner/datei.php da rein!

          OffTopic:
          Dass man auf sowas nicht selber kommt Ihr postet einfach zu schnell ohne nachzudenken. wir sollten es euch nicht so einfach machen.

          Kommentar


          • #20
            Hmm, ich hab das ganze noch ein bischen modifiziert:
            PHP-Code:
            <?PHP

            function get($verzeichniss)
            {

            $verz=opendir ($verzeichniss);

            while (
            $file readdir ($verz)) {

                if ((
            $file == ".") OR ($file == ".."))

                    {

                    }

                else

                    {
                    if (
            is_dir($file) == true)
                        {
                        
            $newverz=$verzeichniss."/".$file;
                            
            get($newverz);
                        }
                    else
                        {
                            
            $newfile=$verzeichniss."/".$file;
                              echo(
            filemtime($newfile));
                            echo(
            $verzeichniss);

                              echo(
            $file);

                            echo(
            "<br><br>");
                        }
                }

            }

            closedir($verz); 
            }
            get(".");
            ?>
            Nur jetzt hab ich folgendes Problem:Bei der ersten rekursionsebene läuft alles einwandfrei, in der 2. Ebene gibt er dann die Ordnernamen mit aus, was er ja eigentlich nach adam riese nicht dürfte, weil das ja in der If-bedinung ausgeschlossen wird. Folglich tritt die if bedinung nicht ein, und er ruft sich nicht wieder auf, d.h. ich komme nur 2 ebenen tief. Woran kann das liegen? Muss wohl irgendwas mit dem aufruf zu tun haben, mit den ordnern.. Aber: Keine ahnung was! Helft mir!

            Kommentar


            • #21
              also diese if bedinung
              if (is_dir($file) == true)
              greift ab der 2. ebene irgendwie nicht mehr. Die ist immer false, auch bei ordnern

              Kommentar


              • #22
                haste mal ne testausgabe von $file gemacht?

                Kommentar


                • #23
                  juhuu, ich habs geschafft. Ich darf nur nicht mit $file vergleichen, sondern mit $newverz. Dann klappts. Jetzt noch ne Frage zu den Timestamps: Kann ich einfach diese UNIX Timestamps überprüfen, und den höchsten dann in ein richtiges datum umwandeln? Oder wie kann man diese Timestamps vergleichen? Also wenn ich z.b. sage 234234432>324234234 ist dann 324234234 auch wirklic die aktuellste, oder setzt sich der Timestamp anders zusammen?

                  Kommentar


                  • #24
                    Grundlagen

                    Unixtimestamp ist Datum+Uhrzeit in Sekunden.

                    Kommentar


                    • #25
                      OK, also kann ich sie vergleichen. HAb das jetzt so gemacht:

                      PHP-Code:
                      <?PHP
                      $high
                      =0;
                      function 
                      get($verzeichniss)
                      {

                      $verz=opendir ($verzeichniss);

                      while (
                      $file readdir ($verz)) {

                          if ((
                      $file == ".") OR ($file == ".."))

                              {

                              }

                          else

                              {
                              
                      $newverz=$verzeichniss."/".$file;
                              if (
                      is_dir($newverz) == true)
                                  {
                                  
                                      
                      get($newverz);
                                  }
                              else
                                  {
                                      if (
                      filemtime($newverz) > $high)
                                          {
                                              
                      $high=filemtime($newverz);
                                          }
                                  }
                          }

                      }

                      closedir($verz); 
                      }
                      get(".");
                      echo(
                      $high);
                      ?>
                      nur warum bekomme ich dann für $high 0?? Er gibt garnicht das aus, was in der Funktion erändert wurde!

                      Kommentar


                      • #26
                        weil high nicht global ist.

                        Kommentar


                        • #27
                          ah. und wie mache ich high global? Ich hab noch nie mit funktionen gearbeitet

                          Kommentar


                          • #28
                            rtfm

                            Kommentar


                            • #29
                              oh mann, ich verstehe uch nicht. Ich meine, es ist nett, das ihr mir helft, wirklich, aber anstatt zu schreiben, wie sehr mann sich aufregt, hättest du doch einfach schreiben können ,wie es geht. So hätten wir uns mehrere postings erspart

                              Kommentar


                              • #30
                                wenn ich voher global $high; schreibe, verändert das nichts...

                                Kommentar

                                Lädt...
                                X