Bilder vom Server laden und auf der Homepage anzeigen

  • Charmin ich verfolge das Thema auch die ganze Zeit und teste zwischen durch auch die sachen die andere vorgeschlagen haben.

    Das mit glob() ist klar , das kannte ich selber da rede ich mal jetzt nicht rüber.


    Die andere Geschichte hat mich auch erst etwas verzweifelt.

    Wenn ich deinen Code aus 19# teste bekomme ich bei mir auch nix angezeigt weil die Bilder noch ein Ordner tiefer liegen.

    Warum der Code nicht tiefer geht und so weiter weiß ich nicht , warum der Code nicht durch alle Ordner läuft , aber versuche doch mal bei dir

    "Billder" in "Bilder/shadow" zu ändern. Wenn das dann auch geht ist es ja gut dann muss man nur noch wissen wie der Code durch alle Ordner geht , bzw warum er es gerade nicht tut. ( zumindest bei mir so )


    EDT: Jetzt habe ich es doch verstanden wie er durch alle ordner geht :)

  • Anscheinend wird das hier eine endlose Geschichte :D

    *kopfschüttel* ich denke, dies sollte einmal angesprochen werden: Die Vorgänge in diesem Thread und manchmal in Computerforen allgemein haben einen stark irrationalen Charakter: Auf der einen Seite wird der Einsatz von Frameworks oder Bibliotheken abgelehnt mit der gebetsmühlenfaften Begründung "... beraubt dich wertvoller Lernerfahrungen." Und in diesem Fall, wo das Selbermachen mit glob() wirklich einen Lerneffekt in Bezug auf rekursive Programmierung bringen würde, und das Verstehen fortgeschrittener Techniken erleichtern, wird mein Vorschlag diesbezüglich abqualifiziert?

    Endlos wird das hier sicher nicht, weil ich nach diesem Beitrag raus bin.

    Das Umsetzen dieses Thema mit glob() erleichtert keinesfalls das Verständnis für fortgeschrittene Techniken, sondern verhindert es eher.


    Ich sach mal so, eine rekursive Funktion inklusive Bedingungen selber zu schreiben, anstatt einfach

    PHP
    $itrDirectory = new RecursiveDirectoryIterator( $sRootDir );
    $itrIterator = new RecursiveRegexIterator( $itrDirectory, '/\.jpg$/i', RecursiveRegexIterator::ALL_MATCHES );

    zu verwenden, hat mit Professionalität nicht mal im entferntesten zu tun.

    Allein wegen der Fehleranfälligkeit, ist es Schwachsinn, das selber zu schreiben. Wenn das Dein Rat ist, kann ich nur annehmen, dass Du selber noch einiges an Grundlagen lernen musst. Deine Hilfen hier sind in letzter Zeit sehr häufig einfach nur schlecht umgesetzt. Falsch sicher nicht, denn es gibt häufig verschiedene Lösungen und auch Lösungswege. Aber warum den fehleranfälligen Weg nehmen, anstatt implementierte Funktionen zu verstehen?!


    Ich merke hier allerdings, dass es wenig Zweck hat weiter zu machen, denn Charmin hat dazu leider zu viele Verständnisschwierigkeiten, was den Bereich Programmierung und Logik angeht. Das ist nicht abwertend gemeint! Er kann es ja lernen, wie jeder andere auch.

    Aber wenn ich sehe, dass es bei drei Zeilen schon nicht Klick macht, bin ich halt raus, weil ich hier nicht der Grundlagen-Erklärbär bin.


    Du kannst ihm ja gerne jetzt eine Deiner super einfachen Lösungen hinwerfen, die dann funktioniert, aber mit fortgeschrittener Programmiertechnik leider dann nichts zu tun hat. Meinen Segen habt ihr.


    Charmin: Wenn Du ein leeres Array bekommst in #19, ist der Pfad falsch oder die Bilder enden nicht mit .jpg.

    Ich habe Deine Zeilen 1:1 kopiert und bei mir erfolgreich getestet.


    It's your turn, solche Grundlagen kann Dir keiner anbnehmen.

  • Guten Abend,


    also, trinkt jeder mal ein Bierchen dann ist wieder gut ;)

    Das ist ein Forum und da gehören nun mal Meinungsverschiedenheiten dazu.

    Ich bin Neuling und muss halt noch sehr viel lernen, das ist mir bekannt, ich selbst kann "noch" nicht

    unterscheiden, welcher Code vorteilhafter ist.


    Ich bitte trotzdem um weitere Hilfe das hier noch ein Ende zu finden ist.


    Mein Ziel war es, das der Code alle Unterordner mit einschließt, deswegen hatte ich das so geschrieben

    Code
    $sRootDir = 'Bilder';

    Jetzt habe ich das mal abgeändert und der Code erkennt die einzelnen Bilder listet diese aber nicht auf.


    html-seminar.de/woltlab/attachment/1987/

  • Jetzt habe ich das mal abgeändert ...

    PHP
    $sRootDir = 'Bilder/shadow';

    Mein Fehler, Du benötigst das so:

    PHP
    $itrIterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($sRootDir) );
    $itrRegEx = new RegexIterator( $itrIterator, '/\.jpg$/i', RecursiveRegexIterator::ALL_MATCHES );

    Dann funktioniert das auch ab dem Verzeichnis Bilder.


    ... und der Code erkennt die einzelnen Bilder listet diese aber nicht auf.

    Naja, die Ausgabe, die Du siehst ist das Ergebnis der Funktion var_dump(). Du siehst quasi das Array mit den einzelnen Elementen.

    Jetzt musst Du herausfinden, wie man sinnvoll über das Array iteriert und die Bilder ausgibt.


    Kleiner Tipp: Mit array_keys() erhältst Du ein für Dich gewohntes Array mit allen gefundenen Bildern.

    PHP
    $sRootDir = 'Bilder';
    
    $itrIterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($sRootDir) );
    $itrRegEx = new RegexIterator( $itrIterator, '/\.jpg$/i', RecursiveRegexIterator::ALL_MATCHES );
    $aImages = array_keys( iterator_to_array($itrRegEx) );
    
    var_dump( $aImages );

    Spätestens hier hast Du ein Standard-Array, wie Du es vermutlich auch von einer selbst gefrickelten Funktion erhalten würdest.

    Die Ausgabe der Bilder musst Du nun Schleifen gesteuert selber herausfinden. Das sind dann wieder Grundlagen, die man zu Hauf im Netz findet.


    Ich bin Neuling und muss halt noch sehr viel lernen, das ist mir bekannt, ich selbst kann "noch" nicht

    unterscheiden, welcher Code vorteilhafter ist.

    Je wartungsfreundlicher, skalierbarer und flexibler der Code, desto vorteilhafter ist er...

    Jeder fängt mal an, das ist nichts schlimmes...

  • Klingt gut.


    EDIT: Ich habe mal was aus einem Projekt ausgegraben.

    Das habe ich mir mal gebastelt, um mich relativ schnell in einem Verzeichnisbaum bewegen zu können. Kann sicher noch verbessert werden, ist schon etwas her, aber funktioniert noch relativ zuverlässig.

    PHP: alle Einträge
    $itr = new RecursiveFileSystemIterator( 'Bilder' );
    
    foreach ( $itr->ToArray(true) as $image ) {
    
        // ... it's your part here
    
    }
    PHP: nur .jpg Dateien
    $itr = new RecursiveFileSystemIterator( 'Bilder', '/\.jpg$/i' );
    
    foreach ( $itr->ToArray(true) as $image ) {
    
        // ... it's your part here
    
    }

    Vielleicht kann das ja der ein oder andere brauchen.

  • ich brauche Unterstützung


    Code
    foreach ($aImages as $bild) {
    .... ;
    }

    Kann mir einer auf die Sprünge helfen? :)


    bei ... muss ja im Prinzip rein, wie genau $aImages ausgeführt werden soll, richtig?

  • bei ... muss ja im Prinzip rein, wie genau $aImages ausgeführt werden soll, richtig?

    Mach aus ausgeführt = angezeigt, dann bist Du auf dem richtigen Weg.


    Du solltest wirklich dringend Grundlagen lernen, wir sind hier jetzt bei simpler Array-Anwendung gelandet und Du zeigst nicht mal einen Ansatz eigener Versuche.

    Alternative wäre, Dir das von jemanden umsetzen zu lassen, der das entsprechende KnowHow hat.

  • Ich sage es mal so, ich habe gerade mal vor ein paar Monate HTML/CSS Grundlagen gelernt und bin halt dabei nach und

    nach meine Homepage vom Baukasten auf vernünftige Programmierung zu wandeln.


    PHP wollte ich erst später einsteigen (Mühsam ernährt sich das Eichhörnchen).


    Der Grundgedanke war halt auf einer Seite die Bilder laden zu lassen.


    Ich werde das erstmal auf Glatteis legen.

  • Zitat

    Ich werde das erstmal auf Glatteis legen.

    Das ist bedauerlich und vermeidbar: Wenn dir das mit der rekursiven Suche zu kompliziert ist, könntest Du darauf verzichten und deine Bilder so organisieren. dass sie alle im selben Verzeichnis liegen. Dann wäre es mit der PHP-Funktion glob() ein Einzeiler, die Bilder einzulesen.

  • Leider geht es hier gar nicht um die Rekursion. Wie in #27 deutlich erkennbar, weiß er mit einem Array nichts anzufangen.

    Und was liefert glob()... Ach ja, ein Array... Tadaaa...


    Das Problem liegt bei den Grundlagen und nicht bei irgendwelchen Rekursionen.

  • Eigentlich erwartet ich in einem Forum auf Hilfe, dies wurde hier durch Arne Drews nur teilweise erfüllt,

    ist auch sein gutes Recht sein Wissen nicht für jedermann preis zu geben ;-).


    Nach diese vielen Wochen hätte ich allerdings doch lieber mit glob() und Sempervivum zusammen gearbeitet,

    denn da wäre ich an mein Ziel angekommen :-).


    Ich kann es nachvollziehen, das die Lust und Verständnis fehlt alles Mundgerecht jemanden vorzuschreiben.

    Wenn jemand meine Geschichte zur Programmierung hier im Forum verfolgt weiß das ich bemüht bin das

    Beste aus der Konstellation zu geben. Dei Erklärung dazu ist im Beitrag #29 zu finden.


    In diesem Sinne,

    freundliche Grüße.

  • nene.

    Du sagst ja das du es gerne mit Sempervivum weiter gemacht hättest, ist ja auch voll ok.

    Hättest du du dich aber zwischen zeitig mal 5 Minuten an Googel gestzt dann hättest du es mit glob() auch selber hinbekommen.

    Erstens der wichtige Link

    https://www.php.net/manual/de/function.glob.php


    Wenn man da kuckt , und es dann noch so macht wie Sempervivum es im Post #30 vorgeschlagen hat , das du den Code mit in deinen Bilder Ordner schmeißt reichen die 3 Zeilen und er Listet mir sie ganzen Bilder als Link auf.

    PHP
    <?php
    foreach (glob("*.jpg") as $filename) {
         echo '<a href="'.$filename.'">'.$filename.'</a><br>';
    }
    ?>


    Das funktioniert sogar und ich bin bestimmt die größte Php Niete in diesen Forum und ich habe es gerade auch mit Dr Goggel geschafft.

    Versuch doch mal in Zukunft mehr eigene Initiative zu zeigen weil dann hätten die Leute das auch gesehen das du es willst und hätten dir betimmt noch schneller zum Ziel geholfen.

    Aber das ist sogar mir aufgefallen das hier das Interesse nicht so wirklich da wahr oder ?

    Nagut. Bin wiede weg , ist nicht mein Thema hier , ich lese lieber mit.

    Mfg die Php Niete

  • Danke für dein Feedback.

    Das Problem war, dass ich wollte, das auch die Unterordner durchforstet werden.


    Mit freundlichen Grüßen,

    die allergrößte PHP Niete :)

    Auch da könnte Google helfen.

    Ich habe auch etwas gegoogelt und auch dafür was gefunden was geht .

    Nur leider gebe ich ungerne hilfe in Php weil ich da auch noch Lehrling bin.

    Goggel du doch mal und wenn du was findest und es trotzdem nicht geht , schreibst du wieder.

    Ist auf jedenfall besser als zu warten bis einer was fertiges postet, weil das passiert nicht oft. ( vor allem in php weil ich es nicht so kann :))


    Schade das es ab post 24# hier nicht mehr richtig weiter ging weil du wahrst da ja schon fast fertig. Du brauchst da ja nur noch nee Schleife durch den array zu jagen und du hast deine Links aufgelistet .


    Kommst du mit den array ktam nicht klar ? Oder mit den Schleifen ?

    Wo brauchst du den da genau hilfe ?


    Weil arrays und schleifen brauchst du immer wieder auch bei Javascript

  • Stimmt. Deswegen hatte ich ja noch gefragt

    Kommst du mit den array kram nicht klar ? Oder mit den Schleifen ?

    Wo brauchst du den da genau hilfe ?


    Weil arrays und schleifen brauchst du immer wieder auch bei Javascript

    Aber das wurde ja zwischen durch auch schon gefragt und kam leider keine konkrete antwort zurück.

    Dann hätte man ( ihr ) wahrscheinlich auch anders helfen können, doch nur fragene Leute kann man helfen.

  • Das Problem war, dass ich wollte, das auch die Unterordner durchforstet werden.

    Und schon drehen wir uns wieder im Kreis...


    Auch nett, dass Du Hilfe zur Selbsthilfe als Wissen für sich behalten interpretierst.

    Zur Kenntnisnahme: Ich habe mein Wissen nicht für mich behalten, Du bist nur nicht in der Lage es zu verstehen, geschweige denn Dich selbstständig weiterzubilden.

  • Ich habe jetzt wieder mein alten Code raus gefischt und überarbeitet, ich komme damit besser klar, aktuell sieht der so aus:


Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!