Ankündigung

Einklappen
Keine Ankündigung bisher.

Seltsamer Fehler beim Bild laden aus einer DB

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Seltsamer Fehler beim Bild laden aus einer DB

    Hallo,

    ich will in meine Datenbank unter anderem Bilder speichern und natürlich auch wieder laden.

    Das speichern funktioniert auch wunderbar mit folgendem Script:
    PHP-Code:
    <?php
    // img_up.php: Ein Bild hochladen
    require_once 'connect.inc.php';
    if (
    array_key_exists('img',$_FILES)) {
    $tmpname $_FILES['img']['tmp_name'];
    $type $_FILES['img']['type'];
    $hndFile fopen($tmpname"r");
    $data addslashes(fread($hndFilefilesize($tmpname)));
    $strQuery "INSERT INTO images
    (imgdata,imgtype) VALUES
    ('
    $data','$type')" ;
    if (!
    mysql_query$strQuery))
    die(
    mysql_error());
    }
    ?>
    <html><body>
    <h1>Bild hochladen</font></h1>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"
    enctype="multipart/form-data">
    Bilddatei:<br />
    <input type="file" name="img" size="40"><p>
    <input type="submit" name="submit" value="Abschicken">
    </form></body></html>
    Was aber jetzt mein Problem ist, dass ich mit folgendem Script die Bilder, bzw. is ja immer nur ein Bild wieder aus meiner MySql Datenbank lesen will:
    PHP-Code:
    <?php
    // img_get.php: Bild abrufen
    require_once 'connect.inc.php';
    $id $_GET['id'];
    $strQuery"select imgdata,imgtype
    from images where id=
    $id";
    $result=mysql_query($strQuery);
    $row=mysql_fetch_assoc($result);
    header("Content-type: {$row['imgtype']}");
    echo 
    $row['imgdata'];
    ?>
    Auf der entsprechenden Webseite greife ich dann über
    echo '<img src="img_get.php?id=2">';
    auf das obige Script zu und will das Bild wieder darstellen. Da passiert aber leider gar nichts.

    Jetzt war ich einfach mal so frech, und habe das in meine Webseite das zweite Script "direkt laufen lassen", d.H so:
    PHP-Code:
    ...
    require_once 
    'connect.inc.php';
    $id $_GET['id'];
    $strQuery"select imgdata,imgtype
    from images where id=2"
    ;
    $result=mysql_query($strQuery);
    $row=mysql_fetch_assoc($result);
    header("Content-type: {$row['imgtype']}");
    echo 
    '<img src= $row[' .imgdata .']>';
    ... 
    Um zu sehen woran es liegt das ich nichts sehe. Ich bekomme dann auch folgende Fehlermeldung:

    Warning: Cannot modify header information - headers already sent by (output started

    Ich habe auch schon gegoogelt und darauf geachtet, dass ich in dem zweiten Script das ich gepostet habe keine leerzeichen am Anfang oder Schluss stehen. Bin sehr verzweifelt...

    Habt ihr eine Ahnung an was es liegen kann? Es sind definitiv Daten in meiner DB. Wenn ich statt
    echo '<img src= $row[' .imgdata .']>';
    echo $row[' .imgdata .'];
    Schreibe sehe ich ziemlich viele wirre Zeichen. Das passt ja, da ich die Bilder Binär in meine Db speichere.

    Vielen Dank im Vorraus

  • #2
    forensuche, google -> diese fehlermeldung gibts hier im Forum sicher schon über 100 mal und die bedeutet immer das gleiche

    Kommentar


    • #3
      Hallo,

      ich habe nochmals gesucht, verstehe es aber trotzdem nicht.

      Ich muss meine header Dateien fertig haben bevor etwas ausgegeben wird. Sonst bekommt ich diesen Fehler. Jetzt wäre für mich logisch, wenn ich meine Header Dateien lade befor der html code kommt. Also wie folgt:
      PHP-Code:
      <?php
                              
          
      // img_get.php: Bild abrufen
          
      require_once 'connect.inc.php';
          
      $id $_GET['id'];
          
      $strQuery"select imgdata,imgtype
          from images where id=2"
      ;
          
      $result=mysql_query($strQuery);
          
      $row=mysql_fetch_assoc($result);
          
      header("Content-type: image/jpeg");
                  
      ?>
      <html>
      .....
          <?php
                              
              
      echo '<img src= $row[' .imgdata .']>';
                  
          
      ?>
      ....
      </html>
      Seltsamer weise sehe ich dann lediglich das: http://localhost/.../Produkte/test.php

      Sonst kommt gar nicht. Wenn ich die Zeile mit header("Content-type: image/jpeg"); auskommentiere sehe ich wieder alles, nur halt das Bild nicht...

      Bitte helft mir.

      Danke!

      Kommentar


      • #4
        Du kannst dem Browser nur entweder Content-type:text/html + <html>...</html> oder Content-type/image/jpeg + jpeg-Daten in einer HTTP Antwort senden, nicht beides vermischt.

        Kommentar

        Lädt...
        X