Yina: Wie kombiniere ich PHP und HTML?

Ich habe eine PHP Datei für das Verkleinern von Bildern und eine Class Datei (thumbnail.php), welches ich mit der PHP Datei verlinke.

So weit, so gut. Das Problem ist, dass ich in meiner PHP Datei nur diesen PHP Code einfügen kann:

<?php
 include_once("thumbnail.php");
 $thumbnail = new thumbnail();
 $thumbnail->create("2_1600.jpg");
 $thumbnail->setQuality(90);
 $thumbnail->resize("200");
 $thumbnail->output();
?>

Also nur für das Verkleinern der Bilder und keinen zusätzlichen HTML Code.

Wenn ich zu dem PHP Code noch zusätzlich HTML schreibe, dann wird das Bild als Symbole dargestellt.

Ich habe schon im Internet nach einer Lösung gesucht, aber überall wird gesagt, dass man den PHP Code einfach so einbinden kann, was in meinem Fall ja nicht geht!

Ich hoffe, dass ihr mir helfen könnt! Danke

Yina

  1. hi,

    Das Problem ist, dass ich in meiner PHP Datei nur diesen PHP Code einfügen kann: [...]
    Also nur für das Verkleinern der Bilder und keinen zusätzlichen HTML Code.

    Dein Script gibt direkt die binären Bilddaten aus.

    Wenn ich zu dem PHP Code noch zusätzlich HTML schreibe, dann wird das Bild als Symbole dargestellt.

    Was wundert dich daran?
    Bei einer "normalen" Seite hast du die binären Bilddaten doch auch nicht im HTML stehen.

    Ich habe schon im Internet nach einer Lösung gesucht, aber überall wird gesagt, dass man den PHP Code einfach so einbinden kann, was in meinem Fall ja nicht geht!

    Bilder bindet man in HTML mit <img> ein.
    Ob die Bildquelle eine statische Datei auf dem Server ist, oder dahinter ein Script liegt, welches dynamisch Bilddaten liefert, ist dem Client vollkommen egal.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Du meinst, dass ich es so hätte schreiben sollen:

      <img src="<?php
       include_once("thumbnail.php");
       $thumbnail = new thumbnail();
       $thumbnail->create("2_1600.jpg");
       $thumbnail->setQuality(90);
       $thumbnail->resize("200");
       $thumbnail->output();?>" border=1 align=center>

      Funktioniert leider auch nicht.

      1. hi,

        Du meinst, dass ich es so hätte schreiben sollen:

        <img src="<?php
        include_once("thumbnail.php");
        $thumbnail = new thumbnail();
        $thumbnail->create("2_1600.jpg");
        $thumbnail->setQuality(90);
        $thumbnail->resize("200");
        $thumbnail->output();?>" border=1 align=center>

        Nein, natürlich nicht.

        Wenn du ein normales Bild in HTML einbindest - dann schreibst du ins src-Attribut auch nicht die _binären Bilddaten_ rein.

        Funktioniert leider auch nicht.

        Natürlich nicht. Es ist immer noch eine reichlich unsinnige Vermischung von HTML und Bilddaten.

        Mach dir jetzt bitte klar, wie der Ablauf aussieht, wenn du ein Bild in HTML einbindest - welche Information der Client dadurch erhält, und wie er dann reagiert.
        Betrachte das dazu bitte zunächst _vollkommen unabhängig_ von jeglicher Dynamik.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Achso, ich glaube, langsam verstehe ich, was du meinst. Ja, brauche immer so ne Weile.

          Dann geht es mit dem Script also gar nicht, weil es nur die Bilddaten anzeigt und ich die reinen Daten nicht als Zieladresse angeben kann?

          Könntest du mir dann vielleicht einen Tipp geben, wie ich das Problem lösen kann, sprich, eine Seite erzeugen, die ein Bild automatisch verkleinert und die HTML zulässt?

          Danke!

          1. hi,

            Achso, ich glaube, langsam verstehe ich, was du meinst. Ja, brauche immer so ne Weile.

            Gut, was hast du verstanden? Mit eigenen Worten bitte.

            Dann geht es mit dem Script also gar nicht, weil es nur die Bilddaten anzeigt und ich die reinen Daten nicht als Zieladresse angeben kann?

            Natürlich "geht" es.

            Könntest du mir dann vielleicht einen Tipp geben, wie ich das Problem lösen kann, sprich, eine Seite erzeugen, die ein Bild automatisch verkleinert und die HTML zulässt?

            Das ist nicht das, was du willst.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Gut, was hast du verstanden? Mit eigenen Worten bitte.

              Habe ich doch schon, man kann nicht die Bilddaten (also die Symbole) als Zieladresse angeben.

              Natürlich "geht" es.

              Nein, eben nicht! Hast du doch selber gesagt.

              Das ist nicht das, was du willst.

              Hä? Doch, das ist doch das, was ich will. Thumbnails mit PHP erzeugen und das Ganze mit HTML verbinden.

              1. hi,

                Gut, was hast du verstanden? Mit eigenen Worten bitte.
                Habe ich doch schon, man kann nicht die Bilddaten (also die Symbole) als Zieladresse angeben.

                Ich wollte von dir wissen, was passiert, wenn der Browser im HTML-Code auf ein <img src="..."> trifft. Wie sieht da der weitere Ablauf aus?

                Natürlich "geht" es.
                Nein, eben nicht! Hast du doch selber gesagt.

                Es geht nicht so, wie du es dir (noch) vorstellst.

                Das ist nicht das, was du willst.
                Hä? Doch, das ist doch das, was ich will. Thumbnails mit PHP erzeugen und das Ganze mit HTML verbinden.

                Aber vom "Verbinden" hast du noch eine Vorstellung, die nicht zielführend ist, nicht sein kann.
                Beantworte dir (und uns) obige Frage, dann wird es klarer werden.

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
                1. Hilfe, ich bin heute wegen Erkältung nicht zur Schule gegangen, komme mir aber jetzt irgendwie vor wie in der Schule.

                  Aber, wenn du mir wirklich helfen kannst, dann versuche ich mal deinen Anleitungen zu folgen:

                  Ich wollte von dir wissen, was passiert, wenn der Browser im HTML-Code auf ein <img src="..."> trifft. Wie sieht da der weitere Ablauf aus?

                  Ich habe keine Ahnung. So gut und detalliert kenne ich mich mit HTML nicht aus. Ich weiß, dass man diesen Tag für das Einbinden eines Bildes braucht. Also, wird das Bild mit der entsprechenden Adresse geöffnet und angezeigt.

                  Es geht nicht so, wie du es dir (noch) vorstellst.

                  Irgendwie weiß ich selber nicht mehr, wie ich es mir vorstelle... Der Code entspricht nicht der Adresse eines Bildes, das weiß ich soweit, aber was dann?

                  1. hi,

                    Ich weiß, dass man diesen Tag für das Einbinden eines Bildes braucht. Also, wird das Bild mit der entsprechenden Adresse geöffnet und angezeigt.

                    Gut, dann machen wir uns etwas genauer klar, was da passiert:

                    • Browser findet im HTML <img src="x">.
                    • Browser erkennt: Hey, wenn ich <img> finde, will man von mir, dass ich ein Bild darstelle.
                    • Browser überlegt: Wo bekomme ich jetzt ein Bild zum Darstellen her?
                    • Browser merkt: Hey, da ist ja eine Adresse angegeben, X.
                    • Browser wendet sich Server: Hey, gib' mit doch mal die Inhalte der Ressource X!
                    • Server schaut nach: Hab ich was auszuliefern für die angefragte Adresse X?
                    • Server findest was, liefert es aus.
                    • Browser bekommt eine Antwort, prüft ob das Bilddaten sein sollen (Content-Type-Header).
                    • Browser stellt Bild dar.

                    So, _alle_ Schritte, die Browser hier macht, sind ganz alltäglich - das haben wir schon tausende Male auf Webseiten "erlebt".

                    Lediglich was der Server macht, machen soll, müssen wir noch etwas genauer betrachten.

                    Server bekommt Anfrage nach Adresse X, und überlegt, wie die zu beantworten wäre.
                    Server schaut nach, finde ich vielleicht irgendeine Datei in meinem System, die X heisst?
                    Wenn er eine findet, und das ist eine Bilddatei - dann liefert er deren Inhalt (nach dem passenden Content-Type-Header) an den Browser aus.

                    Jetzt die spannende Frage: Muss X überhaupt eine Bilddatei sein?
                    Nein, natürlich nicht. X kann beispielsweise genauso gut ein Script sein, welches sich von irgendwoher ein Bild besorgt, es "kleinerrechnet" - und dann die Daten dieses verkleinerten Bildes an den Browser schickt.

                    Ist dem Browser alles vollkommen egal - Hauptsache er bekommt seine Bilddaten, das macht ihn happy.
                    Alles andere, was auf dem Server abläuft, ist ihm total "Wurscht" - es geht ihn nicht die Bohne etwas an.

                    gruß,
                    wahsaga

                    --
                    /voodoo.css:
                    #GeorgeWBush { position:absolute; bottom:-6ft; }
                    1. Jupp, super erklärt und auch "sofort" verstanden.

                      Ich brauche zwei Dateien, die eine für das Bild und die andere zum verlinken, also ist das kombinieren nicht "einbinden", sondern "verlinken".

                      Endlich! Vielen, vielen Dank für deine Hilfe!
                      Macht irgendwie auch mehr Spaß, wenn man selber (mehr oder weniger) drauf komment. =D

  2. Hello out there!

    thumbnail.php
    So weit, so gut.

    Hm, weiß nicht.

    Mir dünkt, du willst bei jedem Aufruf das Thumbnail neu erstellen lassen. Wäre es nicht klüger, das für jedes Bild nur einmal zu tun und die Thumbnails dann auf dem Server zu speichern?

    See ya up the road,
    Gunnar

    PS: Ich beiß mir schon die ganze Zeit auf die Zunge; aber ich werd den Teufel tun und wahsaga ins Handwerk pfuschen. Er macht das schon gut, dich dahin zu führen, dass du die Lösung SELF erkennst.

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
    1. Ich führe eine Wallpapersite und biete zu jedem Wallpaper mehrere Auflösungen an. Und da wollte ich Platz sparen, in dem ich nur EINE Auflösung on stelle und die anderen per PHP verkleinere.

      Aber, ich habs endlich kapiert, dass man aus den Bilddaten erstmal eine Datei erstellen muss und man dann mit einer anderen Datei darauf zugreifen muss.

      Danke, danke, danke! =D

  3. Hallo,

    nachdem du nun deine Lösung hast, sogar mit einem Erfolgserlebnis, möchte ich dir noch einen ganz anderen Gedanken mit auf den Weg geben.

    Wenn du keine Mailadresse angeben willst, dann lass es einfach bleiben - das ist völlig in Ordnung. Irgendeinen Unsinn in das Feld zu schreiben, ist dagegen weder nötig noch schlau.

    So long,
     Martin

    --
    Wissen erwirbt man, indem man immer das Kleingedruckte sorgfältig liest.
    Erfahrung bekommt man, indem man das nicht tut.