Per zufall ein Bild anzeigen mit Cronjob

  • Also,


    ich möchte in meinem Forum jeden Tag einen anderen Comic-Strip zeigen. Dieser soll von einer ausführbaren Datei per zufall von einem Cronjob ausgewählt werden und abenr von einer anderen Datei eingelesen werden.

    Ich beschreibs mal so übersichtlich, wie es geht:


    Ein cronjob führt alle 24h eine datei aus, die per zufall aus einem Ordner mit viel zu vielen Comics einen auswählt.

    Diese Datei, die zufällig ausgewählt wurde, soll dann schließlich von der Datei, die ich eben als verlinkung im Forum gemacht habe, eingelesen werden, um das bild anzuzeigen.


    Praktisch müsste es anch meinem Wissen so aussehen:

    Eine von cronjob ausführbare Datei wählt rdm ein Bild aus und gibt diese in einer 2. Datei aus. Also meinetwegen: Ausgabe: Bildx.jpg in Datei comic.php

    Die Datei, die als verlinkung zum bild fungiert, liest den Inhalt der datei comic.php aus, in der variable zur Verlinkung des bildes, z.b. http://www.forumname.de/bildverzeichnis/"variable"

    Damit eben nichts verändert werden muss, sondern das ganze von alleine läuft.


    Allerdings habe ich leider noch nicht wirklich ahnung von php oder java oder sonst was, damit ich das selbst machen kann.

    Ich weiß nur, daß es mit deiser 3-Dateien-Methode gehen müsste, aber leider nciht wie.

    Ich wäre euch sehr dankbar, wenn ihr mir diesbezüglich helfen könntet. Danke.


    Rosiv

  • du kannst zB mit der datei, die vom cronjob aufgerufen wird, in eine textdatei schreiben lassen (wählst zB bild comic1.jpg aus und lässt dann halt comic1,jpg in die txt schreiben)
    dann in der datei, wos angezeigt werden soll mit fread etc den inhalt einlesen und dann ausgeben

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • datei zufall.php:

    nun die datei ausgabe.php

    PHP
    <?php
    $txt_pfad = "zufall.txt";
    $bild = file($txt_pfad);
    echo "<img src=\"bilder/".$bild."\">";
    ?>

    so nix getestet und schau einfach mal obs geht, sonst poste fehler(-meldung) hier

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • Das geht fast, er sagt mir nur als Bildquelle: Array.

    Also bildpfad usw. stimmt alles, nur als bildname kommt ein: Array und nicht bild.jpg

    Muss ich da was ändern, oder was muss ich machen? Sorr,y bin ein voller PhP-Blindflieger. ^^

    Ich habe eine Datei mit dem oberen, eine .txt und eine mit dem unteren gemacht.

    Nur ist die zufall.txt leider leer.

    Und ich muss wissen, wie ich in einer php-Datei die ausgabe.php ausführe, damit es auch an der richtigen Stelle im Forum auftaucht.

    Danke schonmal.


    Rosiv

  • du musst die ausgabe noch ändern, da file() ein array erzeugt, muss man das arrayelement ausgeben und nicht das array selber:

    PHP
    <?php
    $txt_pfad = "zufall.txt";
    $bild = file($txt_pfad);
    echo "<img src=\"bilder/".$bild[0]."\">";
    ?>

    so long

  • die txt-datei braucht noch schreibrechte (sollte is btw auch automatisch erstellen) und phore hat recht, habsch vergessen ;)
    und zum einbinden an die entsprehcende stelle einfach:
    <?php include("ausgabe.php"); ?>

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • Anderes Proble, selber Fall:

    Wie sage ich der Ausgabe.php denn, daß das Bild, egal wie groß es ursprünglich ist, nur 600x175 sein soll?

    Hab schon einiges probiert, aber dann macht er mir es nicht mehr centriert, denn mit: <div align='center'>... hab ichs mittig gemacht, aber mit style height gehts ned, und is auch dann nicht mehr mittig, oder amch ich was falsch, mal wieder?

  • einfache variante:
    wenn das bild zu breit ist -> höhe neu berechnen, wenn das bild zu hoch ist -> breite neu berechnen.

    schönere variante:
    das bild nicht mit height und width verkleinern, sondern mit php ein neues bild erstellen lassen.
    das code ich dir jetzt aber nicht ;)

    so long

  • so ich hab mal nen alten post von mir ausgegraben:


    ############################


    so,i ch werde jetzt nicht jeden schritt erklären, das ist glaubei ch auch gar nicht nötig
    $thumb_breite = 128;
    -> hier wird eingestellt wie breit das kleinere Bild werden soll
    $thumb_dest = "thumb_";
    -> hier wird der name eingestellt
    dies benötigt noch eine kleine Erklärung:
    Entweder wird dort angegeben, welches Präfix das Thumb bekommen soll ODER der Pfad wird angegeben. Dazu muss nichts weiter eingestellt werden, also diesen einfach anzugeben. zB images/thumbs/
    es muss nur die breite angegeben werden, die höhe wird automatisch berechnet.
    Es können GIF und JPEG-Dateien verwendet werden

    Schritt2, der Aufruf der Funktion:
    wir erstellen uns eine seite (zB thumb.php):

    PHP
    <?php
    $bild = "bild_01.gif"
    include("functions.php");
    /*
    $thumb_breite = 123456;
    $thumb_dest = "a/b/c/";
    */
    do_thumb($bild);?>


    zur erklärung: das bild muss natürlich nicht in einer extra variable angegeben werden, kann aber
    WICHTIG: Die *.php-Datei muss nicht in dem gleichen Ordner liegen wie die Bilder!!!
    es können auch pfade angegeben werden, zB images/bilder/bild01.jpg
    danach wird dann die funktion eingebunden
    Tipp: In der Functions.php sind die beiden Variablen $thumb_breite und &thumb_dest schon definiert, DENNOCH können diese noch einmal in unserer Datei überschrieben werden, in der wir die funktion aufrufen.
    h.d. IN der Funktions.php stehen nur Standart-Werte und in der thumbs.php können wir spezielle werte angeben. (praktisch, ne ? ;) )
    mit do_thumb(); wird dann die funktion einfach aufgerufen.
    es kommt aber noch keine Meldung ob es geklappt hat.
    dies können wir zB dadurch erreichen (nicht getestet, sollte aber):

    PHP
    <?php
    if(do_tumb($bild) {
     echo "Alles klar.";
    }
    else {
     echo "Ging nicht";
    }
    ?>


    das wars eigentlich, immer her mit Fragen und Problemen
    mfg

    #########################

    musste selbst sehn, sollte alles beschrieben sein

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • Tja, nichts geht um eine endlose Fragerei:

    Also ich habe jetzt folgende Zeile:

    $lang['garfield_text'] = '<iframe src="http://*webspace*/comic.php" scrolling="no" marginheight="0" marginwidth="0" frameborder="0" width="100%" height="180" align="center"></iframe>';


    Da zeigt er mir dann natürlich auch dort, wo es sein soll, ein Bild an. Warum dem genau so ist, bitte nicht frage. ich kenn mich mit php noch ned so gut aus und nehme deshalb die Vorgaben anderer addons oder mods und modifiziere sie nur.

    Aber zum Punkt:

    Führe ich die comic.php so aus, zeigt sie mir das Bild an im Firefox. SO zeigt sie mir das bild in dem Forumteil an, wo es stehen soll. Allerdings habe ich dem Bild gesagt, daß es nur 600x175 sein soll. Um es auf voller größe sehen zu können, muss ich ja einen link machen. jetzt die Frage:

    Wie mache ich aus dem Iframe einen link, wo eben die comic.php im neuen fenster öffnet? *g*


    Edit: Wenn man ein rechtsklick macht und auf graphik öffnen geht, sieht man das ja in Groß. Eben diese Funktion hätte ich gerne in obriger Zeile integriert, daß man eben nur draufklicken muss, um die angezeigte Graphik, welches ja eigentlich schon ein Link ist die php-datei, eben in voller Größe zu sehen.


    Rosiv

  • Naja,

    ich hab das ganze mit dem 3-dateien-system gemacht, wie Du oben so schön gepostet hast.

    Die Zeile aber muss so stehen bleiben, DA ich ja nicht weiß, welches Bild mit die comic.php ausgibt, ergo kann ich auch keinen link auf ein Bild machen, sondern muss das so im iframe machen, da ich als img src= keine .php-Datei angeben kann.


    Rosiv

  • ok, dann mach es mal so:
    einfach die ausgabe ein bischen ändern:

    PHP
    <?php 
    $txt_pfad = "zufall.txt"; 
    $bild = file($txt_pfad); 
    echo "<a href=\"bilder/".$bild[0]."\" target=\"_blank\"><img src=\"bilder/".$bild[0]."\"></a>"; 
    ?>


    jetzt sollte das bild verlinkt sein :)
    mfg

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • Das würde gehen, wenn ich nicht das Bild wie von Phore beschrieben re-sizen würde. :)

    Nebenbei eine Frage, wie kann ich das resize so machen, daß er es über 180 und 600 erst neu die größen ändert, denn wenn ich einfach die 175 mit 180 ersetze, zeigt er mir kein Bild mehr an und der Frame hat auch keinen Quellcode.


    sorry, aber nur so wird aus mir noob ein anfänger. ;)

    Rosiv

  • alternativ könnte ich es mal mit deinem alten posting, daß Du mal rausgesucht hast versuchen, nur is das für mich dann doch noch ein wenig verwirrend, iwe ich es damit machen müsste, denn DAS gibt ja ein .gif-file aus, sofern ich das gesehen habe....


    Rosiv

  • ne, das gibt entweder gif oder jpegaus, je nachdem, was du einlesen lässt
    aber machen wirs einfacher, phores posting editiert:

    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  • DANKE!!

    Ich denke, ich sollt mich mal mit Dir in Verbindung setzen, bist ein guter Lehrer. ^^

    Aber die andere Frage: Wie kann ich denn sagen, Wenn Bild größer als 180, dann verkleinern? Davor so groß lassen, wie es ist?

    Denn wie geschrieben, wenn ich da oben 175 jeweils durch 180 ersetze zeigt er mir ncihts an....


    Rosiv