kostenloser Webspace werbefrei: lima-city


PHP - Zufallsbild + Bildname ausgeben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    safeyourface

    Kostenloser Webspace von safeyourface, auf Homepage erstellen warten

    safeyourface hat kostenlosen Webspace.

    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ß.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    safeyourface schrieb:
    <?php
    
    //...siehe oben...
    
    echo "$key";
    echo '<img src="'.$ordner."/".$bilder[$key].'" alt="Zufallsbild 1">';?>
    Versuch es mal so:
    <?php
    echo "{$bilder[$key]}";
    echo '<img src="'.$ordner."/".$bilder[$key].'" alt="Zufallsbild 1">';?>
    Du gibst ja sonst mit echo nur den Index des Bildes aus...

    groovestreet schrieb:
    Mir ist grad beim lesen die Idee gekommen, das über ne Datenbank zu lösen.
    Völlig sinnlose Idee, weil wenn er ein Bild in den Ordner dazu schiebt soll es auch sofort mitbeachtet werden.
  5. Autor dieses Themas

    safeyourface

    Kostenloser Webspace von safeyourface, auf Homepage erstellen warten

    safeyourface hat kostenlosen Webspace.

    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
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    safeyourface schrieb:
    Hab eine Lösung für mein letzteres Problem mit der Dateiendung:
    Das ist nicht die beste Variante, da wenn dein Dateiname einen Punkt (
    .
    ) 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']);
  7. 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

  8. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    kreditwunsch schrieb:
    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.
    Dazu gäbe es eine noch viel elegantere Lösung: die EXIF-Daten der Bilder auswerten (was als Bildformat jpeg vorraussetzt).

    Ein Link dazu hier (ob das auf lima-city funktioniert weiß ich nicht).
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!