Probleme bei der Erstellung einer Bildergalerie

  • Hallo zusammen,


    ich sitze gerade daran, eine Bildergalerie zu erstellen. Leider funktioniert das Ganze nicht so, wie ich mir das vorgestellt habe.


    Genauer gesagt bin ich noch beim ersten Schritt. Nämlich dem, wo das Verzeichnis ausgelesen wird und anschließend in einem Array gespeichert wird.


    Der Code sieht aktuell so aus:




    Folgende Probleme gibt es:


    1. Das Verzeichnis bzw. die einzelnen Dateien/Bilder des Verzeichnisses sollen ja ausgegeben werden. Das passiert eigentlich auch, aber die ersten zwei Schleifendurchläufe spuckt PHP zwei Verzeichnissen aus. Das eine mit dem Namen '.' und das andere mit '..', obwohl diese gar nicht existieren.


    2. Der Filename der Bilder wird richtig ausgegeben, jedoch der Filetype nicht. Da bekomme ich nämlich immer folgende Fehlermeldung:


    Code
    Warning: filetype(): Lstat failed for 10-3-nordirland-magheracross.jpg in C:\xampp\htdocs\php\Projekte\Bildergalerie\bildergalerie.php on line 22


    Beim Filetype steht dann einfach gar nichts. Dazu muss man sagen, dass der mit der selben Fehlermeldung natürlich auch in Zeile 25 meckert, weil ich dort wiederum auf den Filetype zugreife.


    Aus irgendeinem Grund kann der den Filetype also nicht bestimmen o.ä.


    3. Ich kann auf den Array $bilder außerhalb der while-Schleife nicht zugreifen bzw. er kennt sie nicht. Dementsprechend die Notiz:


    Code
    Notice:  Undefined variable: bilder in C:\xampp\htdocs\php\Projekte\Bildergalerie\bildergalerie.php on line 42



    Ich hoffe, jemand kann mir helfen. Das Ganze bezieht sich, wie ihr vielleicht schon gemerkt habt, auf diese Aufgabe: http://www.php-kurs.com/beispiel-bildergalerie-erstellen.htm


    Vielen Dank schon mal! :)


    Gruß
    JR Cologne

  • PHP funktionen arbeiten immer im verzeichniss der Datei, also wenn du den filetype willst und den pfad 'photo.png' angibst, aber das bild im unterordner bilder liegt.. kann er die Datei nicht finden..


    try that

  • Super, vielen Dank. Das funktioniert eigentlich schon mal ganz gut.


    Mein Code sieht jetzt so aus:




    Jetzt wird auf jeden Fall schon mal das Array durch print_r() ausgegeben, aber dieser Teil scheint noch nicht so zu funktionieren:




    Außerdem verstehe ich noch nicht ganz, was der Teil bewirken soll, außer dass der Filename und der Filetype ausgegeben wird. Was macht dieses str_replace() genau und warum wird es nicht ausgegeben? Bzgl. str_replace() habe ich schon bei php.net nachgeschaut, aber irgendwie hat das nicht sonderlich viel geholfen. Wäre super, wenn du mir das kurz erläutern könntest. :)

  • Du brauchst kein opendir und closedir!!!!
    außerdem gewöhne dir lieber ab nach jeder Zeile eine leehrzeile zu schreiben, das macht das lesen schwieriger. Leerzeilen nur um bereiche im code von einander zu trennen!


    mit str_replace( search, replacement, subject) versuche ich im Dateinamen ein ./ durch nichts zu ersetzten, wenn dies funktioniert hast du einen link erwischt (das ../ und ./), also kannst du den Eintrag verwerfen..


    Verbesserung:
    nutze preg_match


    habe deinen Code mal aufgeräumt, bitte auch so übernehmen!

  • Du brauchst kein opendir und closedir!!!!
    außerdem gewöhne dir lieber ab nach jeder Zeile eine leehrzeile zu schreiben, das macht das lesen schwieriger. Leerzeilen nur um bereiche im code von einander zu trennen!


    Achso, ok. Das ist ja praktisch.


    Die Leerzeilen mache ich immer, weil ich finde, dass das sonst irgendwie, wie zusammengeklatscht aussieht. Aber gut, ich werde mich wohl dran gewöhnen. :D



    mit str_replace( search, replacement, subject) versuche ich im Dateinamen ein ./ durch nichts zu ersetzten, wenn dies funktioniert hast du einen link erwischt (das ../ und ./), also kannst du den Eintrag verwerfen..


    Verbesserung:
    nutze preg_match


    Alles klar. Probiere den Code sofort aus. Vielen Dank für deine Mühen! :)



    Edit: Habe den Code genau so übernommen und bekomme folgende Fehlermeldung:


    Code
    Fatal error: Call to undefined function mime_content_type() in C:\xampp\htdocs\php\Projekte\Bildergalerie\bildergalerie.php on line 25
  • ersetze Zeile 15 - 30 durch


    die verwendete Funktion von mir ist veraltet und nur durch eine Erweiterung verfügbar
    -ich hoffe mal du verstehst mein Englisch :D

  • Oh, mann. Sry, aber das funktioniert auch nicht.



    Code
    Fatal error: Call to undefined function finfo_open() in C:\xampp\htdocs\php\Projekte\Bildergalerie\bildergalerie.php on line 15



    Edit: Jo, das Englisch ist nicht das Problem. :D


    Edit 2: Die Fehlermeldung mit der undefinierten Funktion ist schon mal weg. Der Grund dafür war, dass die fileinfo.dll in der php.ini nicht aktiviert war.

  • Lol, genau das habe ich gerade gemacht. Siehe Edit. :D



    Edit:
    Es scheitert aus irgendeinem Grund gerade an diesem Block:


    PHP
    if (strpos('image', $file['mime']) !== FALSE) {//if file mime-type contains word 'image' (image/png image/jpg ...) add it to images
                  $images[] = $file;
                  echo 'test';
    }
  • Ich hab's. So ist es richtig:


    PHP
    if (strpos($file['mime'], 'image') !== FALSE) {//if file mime-type contains word 'image' (image/png image/jpg ...) add it to images
                  $images[] = $file;
    }


    Die beiden Parameter waren einfach nur vertauscht. :D



    Vielen Dank für deine Hilfe. Hast mir sehr geholfen. :)

  • Ja Oberschlau ( Sempervivum ), aber der Lern- und Versteh-Effekt liegt bei grep genau bei 0, natürlich kannst du mit grep das genau so beschreiben.. aber da du leider nicht mal ein Beispiel da gelassen hast ist dein Beitrag da erstaunlich unnötig, wo du es doch viel besser kannst?

Jetzt mitmachen!

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