PHP - Zufallsbild + Bildname ausgeben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
ausgeben
bereich
beschreibung
bild
code
datei
dateiname
datenbank
grad
idee
image
info
letzteres problem
ordner
quelle
typ
url
verzeichnis
zahl
-
Hallo!
Eine kurze Vorstellung meines Vorhabens:
Ich möchte zwei Bilder nebeneinander ausgeben. Die Bilder sollen zufällig aus einem Ordner gewählt werden. Über den beiden Bildern soll dann der jeweilige Bildname stehen und wenn man mit dem Mauszeiger über das Bild geht soll ebenfalls der Bildname angezeigt werden.
Das mit den zufälligen Bildern hat auch bis jetzt ganz gut geklappt. Nur mit dem Bildnamen klappt nicht. Hier ist mein Code für ein Zufallsbild:
/********** Zufallbild Nummer 1 ***********/ //Ordner auswählen $ordner="images"; //Bildtypen $typen= array("gif","jpg","jpeg","png");; //Bilder auslesen $verzeichnis = opendir($ordner); $bilder = array(); while($datei = readdir($verzeichnis)) { //Dateiendung rausfiltern $datei_endung = substr( strrchr($datei,".") ,1); if(in_array($datei_endung, $typen)) { $bilder[] = $datei; } } //Verzeichnis schließen closedir($verzeichnis); //Zufälliges Bild aus Array suchen srand ((double) microtime() * 10000000); $key = array_rand($bilder); //Bild ausgeben: echo '<img src="'.$ordner."/".$bilder[$key].'" alt="Gegenstand 5">';?>
Damit wird nun ein zufälliges Bild aus dem Ordner images angezeigt. Jetzt will ich aber noch den Namen des Bilder über dem Bild angezeigt haben. Ich habe schon folgendes versucht:
<?php //...siehe oben... echo "$key"; echo '<img src="'.$ordner."/".$bilder[$key].'" alt="Zufallsbild 1">';?>
Da der Name des Bildes in der Variablen $key ist, habe ich also versucht, die Variable $key auszugeben. Das Problem ist, dass nun zwei verschiedene Variablen ausgegeben werden. Also der Name entspricht nicht dem Bild. Es ist ein Name von einem anderen Bild.
Ich hoffe ihr habt mein Problem verstanden. Wenn nicht einfach nachfragen. Ihr würdet mir sehr weiterhelfen.
Gruß. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mir ist grad beim lesen die Idee gekommen, das über ne Datenbank zu lösen.
Einfach Spalten mit ID, Dateiname und Bildname.
Dann mit 2 mal quasi das selbe hintereinander:
-mit rand eine zufällige Zahl suchen (ID)
-zu dieser Zahl das Bild samt Titel ausgeben
War nur ne spontane Idee, als ich kurz überflogen hab :D -
safeyourface schrieb:
Versuch es mal so:
<?php //...siehe oben... echo "$key"; echo '<img src="'.$ordner."/".$bilder[$key].'" alt="Zufallsbild 1">';?>
Du gibst ja sonst mit echo nur den Index des Bildes aus...<?php echo "{$bilder[$key]}"; echo '<img src="'.$ordner."/".$bilder[$key].'" alt="Zufallsbild 1">';?>
groovestreet schrieb:
Völlig sinnlose Idee, weil wenn er ein Bild in den Ordner dazu schiebt soll es auch sofort mitbeachtet werden.
Mir ist grad beim lesen die Idee gekommen, das über ne Datenbank zu lösen. -
Versuch es mal so:
<?php echo "{$bilder[$key]}"; echo '<img src="'.$ordner."/".$bilder[$key].'" alt="Zufallsbild 1">';?>
Danke das klappt! Allerdings steht da jetzt das: bildname.png
Also die Dateiendung steht noch da. Ich probiere mal die weg zu bekommen. Habt ihr grad spontan eine Idee?
Anmerkung:
Hab eine Lösung für mein letzteres Problem mit der Dateiendung:
<?php //Dateiendung abschneiden $filename = "{$bilder[$key]}"; $array_file = explode(".",$filename); //Bild ausgeben: echo "$array_file[0]"; echo '<img src="'.$ordner."/".$bilder[$key].'" alt="Zufallbild 1">';?>
Beitrag zuletzt geändert: 3.5.2012 21:11:16 von safeyourface -
safeyourface schrieb:
Das ist nicht die beste Variante, da wenn dein Dateiname einen Punkt (
Hab eine Lösung für mein letzteres Problem mit der Dateiendung:
) enthält alles was danach kommt auch abgeschnitten wird....
Mach es so, das funktioniert immer (auch dann, wenn dein Dateiname noch einen Pfad beinhalten sollte) und gibt dir immer nur den Dateinamen ohne Erweiterung aus:$filename = 'bild.1.png'; $info = pathinfo($filename); echo($info['filename']);
-
Vorschlag:
lege doch eine CSV Datei an für die Bilder,
dann kannst Du für den Bild-Titel auch anstatt nur den Dateiname einen unabhängigen Titel machen
und auf Wunsch auch noch mehr Infos wie weitere Beschreibung, Quelle, etc.
weil wenn Dein Bild den Name: bild_1.jpg hat, dann bekommst der User
aus Dateiname nur die Info (als Titel) bild_1 ... was ja nicht sehr aussagekräftig ist
mit CSV könntest Du dem bild_1.jpg als Titel z.B.: "Sonnenutergang am Strand" geben
die CSV kannst Du ja bi Upload einer neuen Bild-Datei schreiben
(Formular mit Datei, Titel, etc.)
und / oder einen kleinen Admmin-Bereich, zum editieren der Infos
für Bilder, die schon vor dem Upload am Webspace liegen (oder alle neu mit Formular uploaden)
also quasi nur im "Admin-Bereich" zum bearbeiten mit readdir() oder glob()
und für Ausgabe an User dannn aus der CSV lesen
anstatt CSV würde natürlich auch MySQl Tabelle gehen, wäre evtl. sogar noch besser
egal, entscheidend ist, so könntest Du jedem Bild bessere Infos zuweisen
-
kreditwunsch schrieb:
Dazu gäbe es eine noch viel elegantere Lösung: die EXIF-Daten der Bilder auswerten (was als Bildformat jpeg vorraussetzt).
lege doch eine CSV Datei an für die Bilder,
dann kannst Du für den Bild-Titel auch anstatt nur den Dateiname einen unabhängigen Titel machen
und auf Wunsch auch noch mehr Infos wie weitere Beschreibung, Quelle, etc.
Ein Link dazu hier (ob das auf lima-city funktioniert weiß ich nicht). -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage