14x bewertet

Bilder aus Ordner ausgeben

von Isa_G  |  14.12.2009 um 17:33 h
PHP Anwendungen
Typ: PHP Anwendungen
Stufe:Mittel
In der Wishlist wurde nach einer Möglichkeit gefragt, Bilder nach dem Hochladen via FTP automatisch auf der Unterseite auszugeben ohne sie extra verlinken gehen zu müssen.
Dieses Tutorial zeigt euch wie es geht - und zwar ohne notwendige Datenbank!
So schaut es am Schluss aus:

Bild


Wir fangen an...

Ihr habt euer PHP-Grundgerüst:

<?php
include "header.php";
// Inhalt
include "footer.php";
?>



Anstelle des Kommentares "Inhalt" in der Mitte setzen wir nun die notwendige Funktion ein:


<?php
include "header.php";

function 
listPicture($dir$type="png"){ /* Funktion zur Füllung eines
Arrays mit allen Bildern in jeweiligen Ordner */
$x 0;
foreach (
glob($dir.".".$type) as $filename){ /*foreach ist eine
Schleife die vom Anfang bis zum Ende veläuft */
$picture[$x]['file'] = $filename;
$x++; /*hochzählen*/

return 
$picture/* Rückgabewert */
}

include 
"footer.php";
?>




Wir haben hier eine Funktion namens "ListPicture" erzeugt, die erhält eine später überschreibbare/änderbare Variable und eine zweite, die wir im Funktionskopf bereits den Wert "png" zuweise - das heißt, wir wollen alle PNG-Bilder in diesem Ordner auslesen. (Es dürfen also auch nur Bilder im PNG Format in diesem Ordner liegen. Habt ihr 16 PNGs und 1 JPG, so werden nur die 16 PNGs ausgegeben und das JPG ignoriert. (Es ist also Vorsicht beim Abspeichern von Gfx/Fotos verlangt - mir ist kein anderer Weg eingefallen )
"Glob" ist eine vordefinierte PHP-Funktion, die Dinge nach einem vorgegebenen Muster sucht!

Wollt ihr die Anzahl der PNG-Bilder im Ordner ebenfalls ausgeben? So braucht ihr folgendes:

<?php
include('header.php');

function 
listPicture($dir,$type="png"){ /* Funktion zur Füllung eines
Arrays mit allen Bildern in diesem Ordner */
$x 0;
foreach (
glob($dir.".".$type) as $filename){ /*foreach ist eine
Schleife die von gan vorne bis zum ende veläuft */
$picture[$x]['file'] = $filename;
$x++; /*hochzählen*/

return 
$picture/*Rückgabewert*/
}

$ordner "avas/*"/* Hier den Ordner angeben */
$zahl count(glob($ordner.'.png')); /* Icons zählen*/

include "footer.php";
?>



Nun erstellen wir einen kleinen Beispieltext und geben darin die Anzahl der gezälten PNG-Bilder aus:

<?php
include('header.php');

function 
listPicture($dir,$type="png"){ /* Funktion zur Füllung eines
Arrays mit allen Bildern in diesem Ordner */
$x 0;
foreach (
glob($dir.".".$type) as $filename){ /*foreach ist eine
Schleife die von gan vorne bis zum ende veläuft */
$picture[$x]['file'] = $filename;
$x++; /*hochzählen*/

return 
$picture/*Rückgabewert*/
}

$ordner "avas/*"/* Hier den Ordner angeben */
$zahl count(glob($ordner.'.png')); /* Icons zählen*/

echo "<h1>Icons</h1>"/* Beispielüberschrift */
echo "Hier findest du meine <b>".$zahl."</b> 100x100 Pixel großen
Icons.<br><br>"
/* Hier ein Einleitungstext oder so */

include "footer.php";
?>



Ist natürlich alles änderbar, sowohl der Pfad/Ordner als auch da Format, es kann auch JPG oder GIF gewählt werden, völlig egal!
Bei dem Ordner jedoch ist das Sternchen (*) sehr sehr wichtig! Wenn ihr das entfernt geht es nicht mehr!

Nun wollen wir die Bilder natürlich auch ausgeben, dazu rufen wir die obere Funktion auf, erzeugen eine Schleife und geben darin Schritt für Schritt das jeweilige Bild aus:

<?php
include "header.php";

function 
listPicture($dir,$type="png"){ /* Funktion zur Füllung eines
Arrays mit allen Bildern in diesem Ordner */
$x 0;
foreach (
glob($dir.".".$type) as $filename){ /*foreach ist eine
Schleife die von gan vorne bis zum ende veläuft */
$picture[$x]['file'] = $filename;
$x++; /*hochzählen*/

return 
$picture/*Rückgabewert*/
}

$ordner "avas/*"/* Hier den Ordner angeben */
$zahl count(glob($ordner.'.png')); /* Icons zählen*/

echo "<h1>Icons</h1>"/* Beispielüberschrift */
echo "Hier findest du meine <b>".$zahl."</b> 100x100 Pixel großen
Icons.<br><br>"
/* Hier ein Einleitungstext oder so */

$pic listPicture($ordner); /* Funktion aufrufen */
for($i=0;$i count($pic); $i++) { /* Schleife zum Ausgeben der Bilder
*/
echo "<img src=".$pic[$i]['file']." style='border: 1px solid grey;
padding: 5px;'> "
/* Ausabeformatierung */
}

include 
"footer.php";
?>



Die Fomartierung ist natürlich wieder änderbar.
Das war es auch schon :)



17 Kommentare




SmaX

Super Tutorial! 6P
am 14.12.2009 um 18:38 Uhr


ShadowFox

Ich finde es ist sehr, sehr schön erklärt :)!
Weiter so!
am 14.12.2009 um 19:08 Uhr


smoothie

WOW ...richtig gutes tutorial
hilft bestimmt den meisten die PHP können aber noch kein MyQsl oder so ..Smilie Smilie
am 14.12.2009 um 20:24 Uhr


Porzelaine

wow, wow, wow!
Super Tutorial und echt sinnvoll!! Smilie Smilie
6P und Fav ;)
am 15.12.2009 um 14:51 Uhr


pink.raspberry

Echt super tolles Tutorial! Smilie
Du kennst dich echt mit sowas aus Smilie
Ich hoffe das ich sowas in 5-6 Jahren auch zumindest ansatzweise so kann wie du Smilie
Muss halt immer weiter dazu lernen Smilie
am 15.12.2009 um 20:00 Uhr


Isa_G

danke euch allen :)
habt ihr es schon ausprobiert? Irgendein Fehler, der mir nicht auffiel?

Ui danke! Also ich hab Php und Sql innerhalb von 1 1/2 Jahren gelernt und lern noch immer ständig dazu.
Wenn man sich wirklich dafür interessiert, ist es einfach.
Und wenn man mal 1-2 PHP Befehle/Funktionen braucht und nicht auswendig kann ist MANUAL eine gute Bibliothek hehe
am 15.12.2009 um 23:38 Uhr


Fr34k

Kann man dort auch eine Seitenfunktion mit einbauen? Ansonsten super tolles Tutorial Smilie
am 16.12.2009 um 17:16 Uhr


Isa_G

Hm ich wüsst jetzt nich wie. Ich überlege mir mal was....
am 17.12.2009 um 08:35 Uhr


Misa

Ohhhh wow,
hat wunderbar geklappt *.*
6P ♥
am 18.12.2009 um 12:58 Uhr


Reiko

du bist ein Schatz *____* ich habe seit ewigkeiten nach sowas gesucht *____*
6P!!!!!
Wuhuuuu <3 Und dazu noch toll erklaert ;D
am 23.12.2009 um 22:01 Uhr


pink.raspberry

Ich würde gerne mal wissen ob man nicht $allowed_files = array(".jpg", ".gif", ".png") benutzen könnte um das Problem mit nur .png Dateien zu lösen?

Vielleicht geht das ja Smilie

Weil ich würde schon gerne nicht nur .png Dateien ausgeben lassen :/

& selbst ausprobieren will ichs nicht weil ich 1. keine Ahnung hab ich wie ich das umschreiben sollte & 2. auch gar nicht weiß ob das überhaupt möglich ist Smilie
am 24.12.2009 um 12:36 Uhr


Kaley

Naja, das sollte schon mit .jpg, .gif UND .png umsetzbar sein. Habe so eine ähnliche Funktion geschrieben und mit der konnte ich ja auch alle Dateien auslesen : ) Vielleicht setze ich mich mal ran und schreibe eine Erweiterung o.Ä.
am 29.12.2009 um 21:49 Uhr


Isa_G

Das wär klasse Kaley :)
am 29.12.2009 um 22:56 Uhr


Andy

Super Tutorial <3 Bist ein Schatz Smilie Smilie
am 30.12.2009 um 12:00 Uhr


CrazyMoFu

Aber so kann nur jpg. ausgegeben werden würde es vllt. so ändern das alle formate also gif. png. usw.. ausgegeben werden können
am 04.01.2010 um 13:23 Uhr


CrazyMoFu

oh merke das es .png ist aber wie mache ich das alle formate ausgegeben werden?

 $allowed_files = array(".jpg", ".gif", ".png");


kann man das iwo einfügen?
am 09.01.2010 um 23:09 Uhr


Eternal_Moon

Klasse Tutorial *.*
Hab mal ne Frage ist es möglich noch mit Seitenanzahl einzubauen?
am 16.05.2010 um 16:12 Uhr