Natalie van Breem: "Content-Type: image/jpeg" über <img src..>einbinden

Liebes Forum-Team, hallo Ihr fleissigen Beitragsschreiber,

nachdem mein letzter Thread im Nirwana verschwunden ist (mit ihm meine letzte Frage), hier eine Frage zu einem (scheinbar) schon oft in div. Foren diskustiertes Thema (s.o.). Leider hat mich keiner dieser Beiträge ans Ziel geführt. Da seid Ihr mir eingefallen.
---
Also nochmals die Problemdarstellung:
Ich will ein automatisch per php-sript erzeugtes Bild (png oder jpeg - egal eigentlich) in eine bestehende html-Seite integrieren, und zwar so (wie schon oft als Lösungsweg angedeutet):
---

---
Der Weg bis dahin:
html-Seite mit Formular (z.B. Umfrage)
-> Aufruf einer weiteren html-Seite, auf der anschl. das Ergebnis dargestellt wird (per eingebundener Grafik: über das Tag
<img src='auswertung.php' />
(die Daten werden über "method post" weitergereicht)
---

Als Ergebnis erhalte ich nun zwar die Grafik (Daten aus der Datenbank) korrekt, jedoch nur die (z.B. vorgegebenen) Bestandsdaten. Die jeweils abgegebene Stimme wird nicht gezählt/berücksichtigt.

---
bereits gecheckt:

  • php-Verarbeitungs-Script ist i.O.--> binde ich die Grafik nicht in eine html-Datei ein, erfolgt die Ausgabe korrekt (mit berücksichtigung der neu abgegebenen Stimme)
  • die Art der Übertragung der Dateien spielte offenbar keine Rolle (binär oder ASCII): in beiden Fällen bleibt das Problem bestehen
  • die Art der Weitergabe spielt keine Rolle(post oder get)
    ---

Habt Ihr noch ne Idee?

LG Tali

  1. hi,

    html-Seite mit Formular (z.B. Umfrage)
    -> Aufruf einer weiteren html-Seite, auf der anschl. das Ergebnis dargestellt wird (per eingebundener Grafik: über das Tag
    <img src='auswertung.php' />
    (die Daten werden über "method post" weitergereicht)

    Als Ergebnis erhalte ich nun zwar die Grafik (Daten aus der Datenbank) korrekt, jedoch nur die (z.B. vorgegebenen) Bestandsdaten. Die jeweils abgegebene Stimme wird nicht gezählt/berücksichtigt.

    Wie hast du denn sichergestellt, dass die aktuelle Stimme bereits im Datenbestand eingefügt ist, bevor dein bilderstellendes Script diesen ausliest?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Wie hast du denn sichergestellt, dass die aktuelle Stimme bereits im Datenbestand eingefügt ist, bevor dein bilderstellendes Script diesen ausliest?

      »
      Hi,
      indem ich einfach die Grafik ohne Einbindung in eine html-Seite vom Browser berechnen und ausgeben lasse - da klappt die Zählung ohne Probleme - baue ich das gleiche Script jedoch in die html-Datei ein, klappt die Zählung/Auswertung nicht mehr.

      Gruss
      Tali

      1. hi,

        indem ich einfach die Grafik ohne Einbindung in eine html-Seite vom Browser berechnen und ausgeben lasse

        Dein Browser berechnet ...?

        • da klappt die Zählung ohne Probleme

        Sind in dem Falle denn auch zeitnah neue Daten hinzugekommen - oder bildest du damit nur den seit x Sekunden oder Minuten schon bestehenden Bestand ab?

        • baue ich das gleiche Script jedoch in die html-Datei ein, klappt die Zählung/Auswertung nicht mehr.

        Da vermute ich nach wie vor, dass dein Auswertungscript zu dem Zeitpunkt, wo es sich die Daten holt, noch gar nicht die aktuellen Daten vorfindet.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hallo,

          Dein Browser berechnet ...?

          1:0 für Dich

          • da klappt die Zählung ohne Probleme

          Sind in dem Falle denn auch zeitnah neue Daten hinzugekommen - oder bildest du damit nur den seit x Sekunden oder Minuten schon bestehenden Bestand ab?

          Wenn ich den Umweg über das eingebundene Script gehe, dann werden in der Datenbank keine neuen Werte aufgenommen - ich bilde also einen - wie auch immer zuvor entstandenen - Bestand ab.

          • baue ich das gleiche Script jedoch in die html-Datei ein, klappt die Zählung/Auswertung nicht mehr.

          Da vermute ich nach wie vor, dass dein Auswertungscript zu dem Zeitpunkt, wo es sich die Daten holt, noch gar nicht die aktuellen Daten vorfindet.

          Auch dies habe ich zuvor getestet, indem ich die Zählung mal direkt (also das Auswertungsscript liefert die Grafik direkt an den Browser)
          --> Zählung erfolgt, Grafikausgabe ebenso korrekt
          , mal indirekt (über eingebundenes script)
          --> keine Zählung, Grafikausgabe erfolgt mit Ausgabe des bisherigen Datenbestands
          vorgenommen habe.

          Folglich steht zwar die Datenbankverbindung, aber die Werte werden nicht zur Verarbeitung aufgenommen.
          Das Problem scheint tatsächlich die Art und Weise der Einbindung zu sein.

          Gruss Tali

          1. möglicherweise ein cache problem?

            schickst du entsprechende header damit ganz sicher nix gecached wird?

            1. möglicherweise ein cache problem?

              schickst du entsprechende header damit ganz sicher nix gecached wird?

              Uuups - hi Chris,
              also: zwar verstehe ich nicht, wie ich über den header den Cache möglicherweise beeinflusse, aber ok.
              Nehmen wir mal an, es würde am Cache liegen:
              warum funktioniert es dann dennoch nicht, nachdem ich alles entspr. Dateien/Grafiken explizit neu lade oder auch auf anderen Browsern teste?
              Abgesehen davon und wie schon vorher mal gesagt:
              wenn ich die Grafik direkt an den Browser (nicht über den Umweg der Einbindung) schicke, klappt alles wunderbar - sieht nur leider extrem lasch aus.

              Langsam weiss ich echt nicht mehr, woran es liegen könnte.
              Jetzt schneits nicht nur draussen, auch bei mir stellt sich langsames Hirnrieseln ein :-(.

              LG Tali

              1. ja irgendwo schickst du ja den "Content-Type: image/jpeg"

                also <?php header("Content-Type: image/jpeg"); ?> oder irgendwie so, also ist es doch ein leichtes hier ein noch ein

                header("Cache-Control: no-cache, must-revalidate");
                header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

                mitzuschicken, damit du hundertprozentig sicher bist, das der browser wirklich nichts cached.

                (das beispiel stammt von hier: http://ch2.php.net/header , da steht auch was es macht und wies funktioniert)

                oder hast du das bild direkt im html code eingebunden? (also hardcore variante: '<object data="data:image/png;usw..')

                1. Ich hab also mal die header-Zeile entsprechend ergänzt mit:

                  header("Cache-Control: no-cache, must-revalidate");

                  --> hat nix gebracht.

                  oder hast du das bild direkt im html code eingebunden? (also hardcore variante: '<object data="data:image/png;usw..')

                  --> also: hardcore ist ok, wenn damit auch gemeint ist:
                  <html>...<body>..
                  <img src="auswerten_und_darstellen.php">
                  </body>..

                  So hab ichs nämlich versucht - bislang also zwecklos.

                  LGT

                  1. okay

                    was passiert den wenn du mal die auswerten_und_darstellen.php im browser direkt öffnest?

                    (zuvor die header zeile mit dem content-type kommentieren, damit der browser nicht versucht das bild darzustellen)

                    1. das ergibt binären Salat! - mehr nicht.

                      1. das ergibt binären Salat! - mehr nicht.

                        yeah, dann wissen wir nu wenigstens das da kein php fehler generiert wird sonder ein bild ^^ nur bringt uns das nicht wirklich weiter, vieleicht solltest du nun etwas code posten. z.b. der teil wo du das bild einbindest...

                        1. das ergibt binären Salat! - mehr nicht.

                          yeah, dann wissen wir nu wenigstens das da kein php fehler generiert wird sonder ein bild ^^ nur bringt uns das nicht wirklich weiter, vieleicht solltest du nun etwas code posten. z.b. der teil wo du das bild einbindest...

                          Na dann - kannste haben ;-)

                          <body>
                          <div id=ausgabe>
                          Hier erhalten Sie blablabla...

                          <?php echo "<img src='auswerten_und_darstellen.php'>"; ?>
                          </div>

                          </body>

                          ... wie gesagt - nichts aussergewöhnliches - oder doch?

                          1. Guten Abend Natalie,

                            <?php echo "<img src='auswerten_und_darstellen.php'>"; ?>
                            ... wie gesagt - nichts aussergewöhnliches - oder doch?

                            Wenn du die PHP Tags weglaesst, dann sollte es
                            funtionieren. <img src="auswerten_und_darstellen.php'>
                            Denn PHP wird ja erst bei der generierung des Bildes
                            ausgefuehrt.

                            gruesse aus'm ruhrpott
                              jens mueller

                            --
                            As long as a single mind remembers, as long as a single heart
                            beats with passion, how can a dream die?
                            \//_ Live long and prosper
                            sh:( fo:) ch:| rl:° br:^ n4:| ie:% mo:| va:} de:> zu:) fl:( ss:) ls:> js:|
                            1. Servus Jens,

                              <?php echo "<img src='auswerten_und_darstellen.php'>"; ?>
                              ... wie gesagt - nichts aussergewöhnliches - oder doch?

                              Wenn du die PHP Tags weglaesst, dann sollte es
                              funtionieren. <img src="auswerten_und_darstellen.php'>
                              Denn PHP wird ja erst bei der generierung des Bildes
                              ausgefuehrt.

                              --> wäre ja zu schön gewesen - ich habs gleich nochmals so ausprobiert (wie schon viele male zuvor): NIX.

                              Gruss an Dich/Euch
                              Tali

                              1. Ergänzung (ich will Euch ja nicht entmutigen-dennoch solltet ihr wissen):
                                Also, jetzt hab ich testweise mal html-Seite auf ihr Grundgerüst reduziert (um alle dort evtl. vorkommenden Fehlerquellen auszuschliessen) und dann dort im body-Teil wiederum die Einbindung über <img ....> vorgenommen.
                                Der Fehler ist immer noch da: keine Zählung! - es wird nur der seitherige Datenbestand dargestellt.

                                Es ist zum ... - ich glaub - ich wandere aus ..... ach, schmarrn

                                LGT

                                1. Hallo ,

                                  Ergänzung (ich will Euch ja nicht entmutigen-dennoch
                                  solltet ihr wissen):

                                  Mich kannse so schnell nich entmutigen :-)
                                  Wenn es um andere Personen geht, dann habe ich
                                  viel Gedult.
                                  Waehrend ich mit mir selber, oft Ungeduldig bin.

                                  Das sind zwei getrennte Probleme, also gehen wir diese
                                  auch getrennt an.

                                  Also, jetzt hab ich testweise mal html-Seite auf ihr
                                  Grundgerüst reduziert (um alle dort evtl. vorkommenden
                                  Fehlerquellen auszuschliessen)

                                  Der Fehler, scheint, hier weniger bei der Einbindung in
                                  HTML zu liegen. Sondern es scheint eher ein PHP Problem
                                  zu sein.

                                  Der Fehler ist immer noch da: keine Zählung! - es wird
                                  nur der seitherige Datenbestand dargestellt.

                                  Ohne ein bisschen Quelltext, (bitte *Hundeblick* :) kann
                                  ich leider nur meine Kristallkugel, oder meinen Bauch
                                  befragen. (gillt fuer beide Probleme)
                                  Die Kugel ist, leider, gerade im Urlaub, aber mein Bauch
                                  sagt mir: Das Problem liegt bei der Datenabfrage, und
                                  zwar. Wann wird diese durchgefuehrt, und was wird ab-
                                  gefragt.
                                  Wenn wir ein wenig Quelltext sehen koennten, wahere
                                  dein Problem wahrscheinlich schnell zu diagnostizieren.

                                  Es ist zum ... - ich glaub - ich wandere aus .....
                                  ach, schmarrn

                                  Nich gleich aufgeben wenn es schwierig wird, Geduld zeigen
                                  und auch mal ne Pause machen, aber immer konzentriert vorran
                                  arbeiten. Meist sind gerade die Problem, die schwierig zu
                                  sein scheinen die ganz einfachen Probleme.

                                  gruesse aus'm ruhrpott
                                    jens mueller

                                  --
                                  As long as a single mind remembers, as long as a single heart
                                  beats with passion, how can a dream die?
                                  \//_ Live long and prosper
                                  sh:( fo:) ch:| rl:° br:^ n4:| ie:% mo:| va:} de:> zu:) fl:( ss:) ls:> js:|
                                  1. Also gut, Ihr/Du wolltest es so - wie gesagt: ich finde nichts ungewöhnliches. Hier nun der relevante Code aus allen 3 beteiligten Dateien:

                                    1. Datei - Start*********** Startseite der Umfrage - z.B. index.html oder index.php ****für die Browserdarstellung**********

                                    <html>....
                                      <h1>Umfrage</h1><br />
                                    <h3>Wie würden Sie entscheiden?</h3>
                                    <form method="POST" action="ergebnisgrafik.php">
                                    <input type=radio name=wahl value="Kandidat1">Kandidat1<br />
                                    <input type=radio name=wahl value="Kandidat2">Kandidat2<br />

                                    <input type=submit value="Ergebnis anzeigen">
                                    </form>
                                    ...</html>
                                    *********** Startseite der Umfrage - z.B. index.html oder index.php *********

                                    2. Datei - Start*********** Seite der Ergebnisdarstellung - z.B. ergebnisgrafik.php  ****für die Browserdarstellung**********

                                    <html>....
                                     <img src='auswerten.php' />
                                    ... </html>
                                    *********** Seite der Ergebnisdarstellung - z.B. ergebnisgrafik.php  ********

                                    3. Datei - Start*********** Auszug des Scripts zur Erzeugung der Grafik und zum Datenbankeintrag/-abruf - z.B. ergebnisgrafik.php  **********

                                    <?php
                                    // Die Benutzereingabe aus dem Formular auswerten.
                                    $wahl = $_POST['wahl'];

                                    // Bei der Datenbank anmelden.
                                    if (!$db_conn = @mysql_connect('localhost', 'Nutzer', 'Passwort')) {
                                        echo 'Verbindungsaufbau zur Datenbank fehlgeschlagen. <br />Bitte versuchen Sie es später noch einmal.';
                                        exit;
                                    ..... dazwischen erfolgt die Grafikerzeugung.....

                                    // Das Bild anzeigen

                                    Header('Content-type:  image/png');
                                    header('Cache-Control: no-cache, must-revalidate');
                                    ImagePNG($im);

                                    ImageDestroy($im);
                                    ?>
                                    *********** Auszug des Scripts zur Erzeugung der Grafik und zum Datenbankeintrag/-abruf - z.B. ergebnisgrafik.php  **********

                                    Abendliche Grüße Tali

                                    1. Hallo Natalie,

                                      Also gut, Ihr/Du wolltest es so - wie gesagt: ich finde nichts ungewöhnliches. Hier nun der relevante Code aus allen 3 beteiligten Dateien:

                                      aha, _drei_ Dateien - ich hab mir schon sowas gedacht. ;-)
                                      Also erst das Formular.

                                      <form method="POST" action="ergebnisgrafik.php">
                                      <input type=radio name=wahl value="Kandidat1">Kandidat1<br />
                                      <input type=radio name=wahl value="Kandidat2">Kandidat2<br />

                                      <input type=submit value="Ergebnis anzeigen">
                                      </form>

                                      Ist ja nichts Wildes dran, okay.

                                      Jetzt die ergebnisgrafik.php - da hast du dich mit den Namen verzettelt. Ist das nun das HTML-Dokument, das die Grafik (das img-Element) _enthält_, oder ist es das Script, das das Bild selbst erzeugt?
                                      Die Reihenfolge, in der du die Codes aufzählst, lässt mich ersteres vermuten.

                                      1. Datei - Start*********** Seite der Ergebnisdarstellung - z.B. ergebnisgrafik.php  ****für die Browserdarstellung**********

                                      <html>....
                                      <img src='auswerten.php' />
                                      ... </html>

                                      Aha, hier wird also auswerten.php referenziert, dieses Script muss die Grafikdaten erzeugen. Dumm nur, dass auswerten.php die Formulareingaben nicht mehr bekommt - die POST-Daten hat ja nur ergebnisgrafik.php bekommen und nicht weitergereicht.

                                      1. Datei - Start*********** Auszug des Scripts zur Erzeugung der Grafik und zum Datenbankeintrag/-abruf - z.B. ergebnisgrafik.php  **********

                                      Hier meintest du wohl auswerten.php?
                                      Falls ja, ...

                                      <?php
                                      // Die Benutzereingabe aus dem Formular auswerten.
                                      $wahl = $_POST['wahl'];

                                      ... dann gibt es an dieser Stelle keine Benutzereingabe mehr!
                                      Deine Struktur, die Verteilung der Teilaufgaben auf die Scripte, ist falsch. Besser wäre folgendes:

                                      1. HTML-Dokument mit Formular
                                         Beim Absenden: POST an eintragen.php

                                      2. eintragen.php
                                         Trägt -wie der Name sagt- die Angaben in die Datenbank ein
                                         und sendet dann ein Redirect auf anzeigen.php

                                      3. anzeigen.php
                                         Könnte auch ein gewöhnliches HTML-Dokument ohne PHP sein,
                                         bindet ergebnis.php als img-Element ein

                                      4. ergebnis.php
                                         Erzeugt die Ergebnis-Grafik aus den momentanen Daten in der
                                         Datenbank (reiner lesender Zugriff).

                                      So long,
                                       Martin

                                      --
                                      Lieber blau machen, als sich schwarz ärgern.
                                      1. Hallo Martin,

                                        danke Dir für Deine Analyse. Mit Deinen Vermutungen lagst Du bzgl. meiner Schreibfehler und Verzettelei richtig.

                                        ... dann gibt es an dieser Stelle keine Benutzereingabe mehr!

                                        das leuchtet mir inwzischen ein.

                                        Deine Struktur, die Verteilung der Teilaufgaben auf die Scripte, ist falsch. Besser wäre folgendes:

                                        1. HTML-Dokument mit Formular
                                             Beim Absenden: POST an eintragen.php

                                        2. eintragen.php
                                             Trägt -wie der Name sagt- die Angaben in die Datenbank ein
                                             und sendet dann ein Redirect auf anzeigen.php

                                        Uuupsala - redirect auf anz.... ? Krasse Überforderung .....

                                        1. anzeigen.php
                                             Könnte auch ein gewöhnliches HTML-Dokument ohne PHP sein,
                                             bindet ergebnis.php als img-Element ein

                                        2. ergebnis.php
                                             Erzeugt die Ergebnis-Grafik aus den momentanen Daten in der
                                             Datenbank (reiner lesender Zugriff).

                                        Dein Vorschlag ist sicher spitze!
                                        Nur leider fühle ich mich besonders im Hinblick auf 2. etwas überfordert. Wüßte jetzt nicht adhoc, ob ich mein bisheriges Script zum Datenbankeintrag/Grafikerzeugen entspr. anpassen könnte.
                                        Gibt es keinen Weg, meine Dateien entspr. zu ändern?

                                        LG Tali

                                        1. Hallo Martin und all die anderen fleissigen Helfer,

                                          ich habe Deinen neuen Ansatz nun doch korrekt umsetzen können und - was soll ich sagen: ICH WAR ERFOLGREICH! - ES KLAPPT.

                                          Ganz herzlichen Dank - schon lange nicht mehr so gut gefühlt.

                                          Bleibt zwar noch ungelöst die Sache mit der TrueType-Einbindung (siehe Thread von vor 2 Tagen) - wenn Ihr also auch diesbzgl. noch Inspirationen habt - immer her damit.

                                          Jedenfalls bin ich Euch extrem dankbar!

                                          Liebe Grüße
                                          Natalie

                                        2. Hallo,

                                          freut mich, dass ich dir nun doch zu einer Lösung verhelfen konnte. :-)

                                          1. eintragen.php
                                               Trägt -wie der Name sagt- die Angaben in die Datenbank ein
                                               und sendet dann ein Redirect auf anzeigen.php
                                            Uuupsala - redirect auf anz.... ? Krasse Überforderung .....

                                          ist gar nicht so wild - es gnügt schon ein

                                          header("Location: http://example.org/anzeigen.php";

                                          Das Script darf nur außer dieser header-Anweisung keine Ausgabe machen! Aber anscheinend hast du das ja hingekriegt.

                                          Gibt es keinen Weg, meine Dateien entspr. zu ändern?

                                          Es gibt immer einen Weg! Oder: Wo ein Wille ist, ist auch ein Gebüsch. ;-)

                                          Schönen Abend noch,
                                           Martin

                                          --
                                          Viele Fachleute vertreten die Ansicht, jedes Feature eines Programms, das sich nicht auf Wunsch abstellen lässt, sei ein Bug.
                                          Außer bei Microsoft. Da ist es umgekehrt.
                          2. ganz okay, bis auf ein kleines Detail:

                            <?php echo "<img src="auswerten_und_darstellen.php">"; ?>

                            du musst " verwenden im html bei den attributen, apostroph sind nicht erlaubt.

                      2. Guten Abend Natalie,

                        das ergibt binären Salat! - mehr nicht.

                        Kannst du eventuell mal den http-Header, den der Server
                        an deinen Browser sendet hier posten?
                        Anhand deiner Beschreibung, scheint mir das Problem
                        am Header zu liegen, dass dein Browser Binaer-Salat an-
                        zeigt. Der Browser erkennt nicht, dass es sich um ein
                        Bild hamdelt, sondern nimmt an dass es eine Textdatei ist.

                        Fuer Mozilla gibt es die Erweiterung livehttpheaders
                        die dir die http-Header Anzeigt.
                        Opera hat ein Panel "Info", welches eine Aehnliche Funktion
                        erfuellt.

                        gruesse aus'm ruhrpott
                          jens mueller

                        --
                        As long as a single mind remembers, as long as a single heart
                        beats with passion, how can a dream die?
                        \//_ Live long and prosper
                        sh:( fo:) ch:| rl:° br:^ n4:| ie:% mo:| va:} de:> zu:) fl:( ss:) ls:> js:|