Ankündigung

Einklappen
Keine Ankündigung bisher.

Verzeichnis auslesen und letzte Dateien anzeigen

Einklappen

Neue Werbung 2019

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

  • Verzeichnis auslesen und letzte Dateien anzeigen

    Hallo und schönen Abend an alle. Ich stehe gerade auf dem Schlauch. Versteht mich bitte nicht falsch, aber ich komme gerade nicht weiter.

    Verzeichnisse auslesen, Dateien anzeigen und verarbeiten stellen keine große Hürde dar. Alles mit "scan/glob" erledigt, aber ich arbeite gerade an einem Projekt, das mich gerade ein wenig auf die Probe stellt.

    Ich habe in einem Ordner mehrere andere Ordner und in deren sind sortierte Bilder. Die Bilder werden von einem Receiver stündlich und ohne nennenswerten Abständen gespeichert. Nun möchte ich den letzten erstellten Ordner und Bilder in diesem Ordner anzeigen lassen. Kurze beispielhafte Struktur eines der Ordner:

    - pictures
    --> 20240902
    -----> 2014_09_02_22_17_56_s_33_87_no_137.jpg
    -----> 2014_09_02_22_17_56_s_33_87_za_137.jpg
    -----> 2014_09_02_22_17_56_s_33_87_pr_137.jpg
    -----> 2014_09_02_15_11_51_s_8_97_no_137.jpg
    -----> 2014_09_02_15_11_51_s_8_97_za_137.jpg
    -----> 2014_09_02_15_11_51_s_8_97_pr_137.jpg

    --> 20240903
    -----> 2014_09_03_13_55_09_s_13_234_no_137.jpg
    -----> 2014_09_03_13_55_09_s_13_234_za_137.jpg
    -----> 2014_09_03_13_55_09_s_13_234_pr_137.jpg
    -----> 2014_09_03_08_33_49_s_89_54_no_137.jpg
    -----> 2014_09_03_08_33_49_s_89_54_za_137.jpg
    -----> 2014_09_03_08_33_49_s_89_54_pr_137.jpg

    usw. Jetzt würde ich gerne den Ordner 20240903 mit den letzten erstellten Dateien:

    -----> 2014_09_03_13_55_09_s_13_234_no_137.jpg
    -----> 2014_09_03_13_55_09_s_13_234_za_137.jpg
    -----> 2014_09_03_13_55_09_s_13_234_pr_137.jpg

    anzeigen bzw. in einem Array einlesen lassen. Kann mir einer einen Tip geben wie ich das lösen kann ?

  • #2
    https://www.php.net/manual/de/function.scandir.php
    https://www.php.net/manual/de/dir.co...ort-descending

    Kommentar


    • #3
      Hallo, das ist mir klar, das war nicht meine Frage, sondern wie ich die letzten Dateiengruppe aufrufe. Das ich das sortieren kann ist mir klar. Der zeigt mir eben alle Dateien im Ordner an und nicht die, wie oben aufgelistet.

      Kommentar


      • #4
        Zitat von b0wie Beitrag anzeigen
        Hallo, das ist mir klar, das war nicht meine Frage, sondern wie ich die letzten Dateiengruppe aufrufe. Das ich das sortieren kann ist mir klar. Der zeigt mir eben alle Dateien im Ordner an und nicht die, wie oben aufgelistet.
        D.h. du hast alle sortiert im Array liegen? Dann einfach ein array_slice() drüber laufen lassen.

        Kommentar


        • #5
          Naja nicht ganz. Als erstes müsste ich den letzten Ordner der erstellt wurde ermitteln. Dann können die Bilder auch mal 3, 6 oder 10 Bilder sein. Es gibt keine nennenswerten Struktur wie der Receiver die Anzahl der Bilder speichert. Es kann auch mal so aussehen:

          - pictures
          --> 20240902
          -----> 2014_09_02_22_17_56_s_33_87_no_137.jpg
          -----> 2014_09_02_22_17_56_s_33_87_za_137.jpg
          -----> 2014_09_02_22_17_56_s_33_87_pr_137.jpg
          -----> 2014_09_02_15_11_51_s_8_97_no_137.jpg
          -----> 2014_09_02_15_11_51_s_8_97_za_137.jpg
          -----> 2014_09_02_15_11_51_s_8_97_pr_137.jpg
          -----> 2014_09_02_15_11_51_s_8_97_oo_137.jpg
          -----> 2014_09_02_15_11_51_s_8_97_es_137.jpg
          -----> 2014_09_02_15_11_51_s_8_97_gu_137.jpg
          --> 20240903
          -----> 2014_09_03_13_55_09_s_13_234_no_137.jpg
          -----> 2014_09_03_13_55_09_s_13_234_za_137.jpg
          -----> 2014_09_03_13_55_09_s_13_234_pr_137.jpg
          -----> 2014_09_03_08_33_49_s_89_54_no_137.jpg
          -----> 2014_09_03_08_33_49_s_89_54_za_137.jpg
          -----> 2014_09_03_08_33_49_s_89_54_pr_137.jpg

          Kommentar


          • #6
            Zitat von b0wie Beitrag anzeigen
            Naja nicht ganz. Als erstes müsste ich den letzten Ordner der erstellt wurde ermitteln. Dann können die Bilder auch mal 3, 6 oder 10 Bilder sein. Es gibt keine nennenswerten Struktur wie der Receiver die Anzahl der Bilder speichert.
            Einfach ein glob() mit »*/*.*« als Muster über das Verzeichnis pictures laufen lassen, Ergebnis umdrehen und die ersten drei Werte abschneiden? Alternativ auch einfach die letzten drei Werte abschneiden und die drei Werte sortieren, das ist evtl. sinnvoller. Mit dem DirectoryIterator lässt sich da bestimmt auch noch was basteln, glob ist aber wohl erstmal einfacher …

            Kommentar


            • #7
              Zitat von b0wie Beitrag anzeigen
              Hallo, das ist mir klar, das war nicht meine Frage, sondern wie ich die letzten Dateiengruppe aufrufe. Das ich das sortieren kann ist mir klar. Der zeigt mir eben alle Dateien im Ordner an und nicht die, wie oben aufgelistet.
              Hattest du dir das Beispiel weiter unten angesehen angesehen?

              So, hier die 3-Zeiler-Lösung:
              PHP-Code:
              <?php
                  $dir
              "/temp/pics";

                  
              $f_monscandir$dirSCANDIR_SORT_DESCENDING);
                  
              $fscandir$dir.'/'.$f_mon[0], SCANDIR_SORT_DESCENDING);
                  echo 
              $dir.'/'.$f_mon[0].'/'.$f[0];
              ?>

              Kommentar


              • #8
                Alles klar, teste ich morgen aus und melde mich dann. Gute Nacht an euch ?!

                Kommentar


                • #9
                  Es wäre sinnvoll genau zu verlinken/benennen welchen Code du dort meinst - die Beispiele lassen sind nummeriert und die Kommentare lassen sich direkt verlinken.

                  So, hier die 3-Zeiler-Lösung:
                  Das ist keine Lösung, das ist schlechter Code: wenn im ersten Verzeichnis eine Datei nach oben sortiert wird, schlägt das zweite scandir fehl. Zudem sind kryptische Abkürzungen als Variablennamen nicht sinnvoll und auch nicht mehr notwendig (Speicher kostet nichts mehr). Auch liefert der Code nur eine Datei und lässt sich auch nur auf drei Dateien erweitern wenn im neusten Verzeichnis mindestens drei Dateien existieren - wenn nicht soll wohl die letzte Datei aus dem Verzeichnis davor geliefert werden? Mal ganz davon zu schweigen dass fertiger Code dem Fragenden nicht wirklich hilft (ja, im ersten Moment scheinbar schon, beim nächsten Problemchen kommt er dann aber wieder nicht weiter).

                  Kommentar


                  • #10
                    Guten morgen, habe deinen "3 Zeiler" getestet. Der Rest hat sich von alleine gegeben. Vielen dank für deinen Denkansatz. ich habe es nun dank deines Tipps so gelöst:
                    PHP-Code:
                    $dir "./cache/receiver_b/images";
                        
                    $f_mon scandir($dirSCANDIR_SORT_DESCENDING);
                        
                    $f scandir($dir.'/'.$f_mon[0], SCANDIR_SORT_DESCENDING);

                        foreach (
                    glob($dir."/".$f_mon[0]."/".substr($f[0], 025)."*.jpg"GLOB_BRACE) as $k => $v) {
                            
                    $pics[] = $v;
                        } 
                    Nun bekomme ich alle Bilder der gleichen Gruppe:
                    Code:
                    cache/receiver_b/images/20240824/24_08_2024_11_25_mm-18*.jpg
                    Vielen dank!

                    Kommentar


                    • #11
                      tk1234 Du scheinst die Aufgabenstellung nicht verstanden zu haben:
                      Zitat von b0wie Beitrag anzeigen
                      Nun möchte ich den letzten erstellten Ordner und Bilder in diesem Ordner anzeigen lassen.
                      Weil die Ordner- und Dateinamen es ermöglichen, zeigt dieser 3-Zeiler einen Lösungsansatz.


                      Wie kann man das einzige Beispiel direkt verlinken?

                      Kommentar


                      • #12
                        Zitat von toosten Beitrag anzeigen
                        tk1234 Du scheinst die Aufgabenstellung nicht verstanden zu haben:
                        Anscheinend ist das Format auch ein ganz anderes als ursprünglich geschrieben: in #10 sieht das Format auf einmal ganz anders aus. Das Problem war eher die mangelhafte Problembeschreibung: von den Dateien einer Gruppe war nie die Rede. Was passieren soll wenn es in einem Verzeichnis nur z.B. zwei Dateien gibt ist auch nicht definiert (sofern das überhaupt vorkommen kann).

                        Wie kann man das einzige Beispiel direkt verlinken?
                        Einzelne Beispiele lassen sich leider nicht direkt verlinken da das keine Überschriften mit entsprechender Funktionalität sind aber die Überschrift "Beispiele" (und alle auf der gleichen Ebene) lässt sich verlinken: einfach hinter die Überschrift klicken (auf das ¶ das dann erscheint), dann steht in der Adresszeile auch der Anker - welches Beispiel man meint, muss man dann einfach schreiben. Bei den Kommentaren wäre es ein Klick auf die E-Mailadresse um an das genaue Ziel zu kommen (Nummer des Kommentars ist wenig sinnvoll da sich die Reihenfolge aus der Anzahl der Bewertungen ergibt).

                        Kommentar


                        • #13
                          Zitat von toosten Beitrag anzeigen


                          Wie kann man das einzige Beispiel direkt verlinken?
                          https://www.php.net/manual/de/functi...p#example-2185

                          Kommentar

                          Lädt...
                          X