Ankündigung

Einklappen
Keine Ankündigung bisher.

Image aus Datenbank auslesen und sichtbar machen.

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Image aus Datenbank auslesen und sichtbar machen.

    Hab nochmal eine Datenbank Frage:

    Mit folgendem Code

    PHP-Code:
    <img class="img" src="produktbild.php?id=<?php echo $row['id']; ?>"
    & (produktbild.php):

    Code:
    <?php
    session_start();
    include("database.php");
    $stmt = $pdo->prepare("select contenttype, imagedata from produkte where id=?");
    $stmt->execute(array($_GET['id']));
    $stmt->bindColumn(1, $type, PDO::PARAM_STR, 256);
    $stmt->bindColumn(2, $lob, PDO::PARAM_LOB);
    $stmt->fetch(PDO::FETCH_BOUND);
    
    header("Content-Type: $type");
    echo $lob;
    ?>
    versuche ich ein in der Datenbank gespeichertes Bild anzuzeigen. Leider geht das nicht. Wieso?

    (In anderen Projekten hat das so bisher immer geklappt!)

    Für Anregungen bin ich sehr Dankbar.



  • #2
    "Leider geht das nicht" ist keine brauchbare Fehlerbeschreibung.

    Kommentar


    • #3
      Es wird kein Bild angezeigt.

      Kommentar


      • #4
        Scherzkeks.. Das hattest du bereits erwähnt Er meint was konkret dein Debugging zeigte. Welcher Type is das in der DB.. Errorlog.. Http header.. DB error reporting etc etc. Schon angeschaut?
        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          PHP-Code:
          <img class="img" src="produktbild.php?id=<?php echo $row['id']; ?>"
          Auch wenn es bei id offensichtlich keine Probleme gibt solltest du dir angewöhnen die Parameter einer URL mit http_build_query anzuhängen.

          Welchen Datenbank nutzt du. es macht einen Unterschied ob Postgres oder Mysql verwendet wird, siehe die Notiz zu http://php.net/manual/en/pdostatement.bindcolumn.php
          PHP-Code:
          header("Content-Type: $type"); 
          Was steht in $type, woher kommt dieser Wert?

          Was steht im Quelltext des ausgelieferten HTML in img src?






          Kommentar


          • #6
            Errorlog ist leer.
            Das Bildformat ist folgendes: image/jpeg

            Kommentar


            • #7
              Was steht in $type, woher kommt dieser Wert?
              Code:
              <?php
              session_start();
              include("database.php");
              $stmt = $pdo->prepare("select contenttype, imagedata from produkte where id=?");
              $stmt->execute(array($_GET['id']));
              $stmt->bindColumn(1, $type, PDO::PARAM_STR, 256);
              $stmt->bindColumn(2, $lob, PDO::PARAM_LOB);
              $stmt->fetch(PDO::FETCH_BOUND);
              
              header("Content-Type: $type");
              echo $lob;
              ?>
              4. Zeile: contenttype

              Ich benutze MySQL.

              Kommentar


              • #8
                #4
                DB error reporting
                Siehe Wissenssammlung oder Google zu pdo error options.

                Kommentar


                • #9
                  Zitat von protestix Beitrag anzeigen
                  #4
                  DB error reporting
                  Siehe Wissenssammlung oder Google zu pdo error options.
                  Das versteh ich irgendwie nicht.
                  Wenn ich das so
                  Code:
                  $dsn = 'mysql:dbname=test;host=localhost;charset=utf8'; $user = 'root'; $pass = ''; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ, PDO::ATTR_EMULATE_PREPARES => false ]; $pdo = new PDO($dsn, $user, $pass, $options);
                  mache (halt mit meinen Daten), kriege ich eine Fehlermeldung

                  Kommentar


                  • #10
                    Die Fehlermeldung sagt dir doch was nicht stimmt und wo der Fehler auftrat

                    Kommentar


                    • #11
                      lösch doch mal den domainnamen aus der fehlermeldung.

                      Kommentar


                      • #12
                        Schon Post #12 und immer nich keine brauchbare Fehlerbeschreibung. Was soll dieses Theater? Als würdest du das erste mal in einem Forum posten...

                        Kommentar


                        • #13
                          Zitat von hellbringer Beitrag anzeigen
                          Schon Post #12 und immer nich keine brauchbare Fehlerbeschreibung. Was soll dieses Theater? Als würdest du das erste mal in einem Forum posten...
                          Betroffene Zeile :

                          Code:
                          <h4><?php echo $row['name']; ?></h4>
                          Voran gehender Code:

                          Code:
                          $sql = "SELECT id, name, preis FROM produkte";
                          $result = $pdo->query($sql);
                          foreach ($result as $row):

                          Kommentar


                          • #14
                            Und der Code für die Bildausgabe:

                            Code:
                            <?php $stmt = "SELECT contenttype, imagedata FROM `produkte` WHERE id = '{$row['id']}' "; ?>
                                  <img class="img" src="produktbild.php?id=<?php echo $row['id']; ?>" alt="<?php echo $row['name']; ?>" width="600" height="400">
                            Und die neue database.php:

                            Code:
                            <?php
                            $options = [
                                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
                                PDO::ATTR_EMULATE_PREPARES => false
                            ];
                            $pdo = new PDO('mysql:host=versandparty.de.mysql;dbname=versandparty_de;charset=utf8', 'versandparty_de', 'xxx',$options);
                            $pdo->exec("SET time_zone='Europe/Berlin';");

                            Kommentar


                            • #15
                              hellbringer

                              Ich versuche mit dieser Datei (produktbild.php):

                              Code:
                              <?php
                              session_start();
                              include("database.php");
                              $stmt = $pdo->prepare("select contenttype, imagedata from produkte where id=1");
                              $stmt->execute(array());
                              $stmt->bindColumn(1, $type, PDO::PARAM_STR, 256);
                              $stmt->bindColumn(2, $lob, PDO::PARAM_LOB);
                              $stmt->fetch(PDO::FETCH_BOUND);
                              
                              header("Content-Type: $type");
                              echo $lob;
                              ?>
                              und diesem Code

                              Code:
                              <?php $stmt = "SELECT contenttype, imagedata FROM `produkte` WHERE id = '{$row['id']}' "; ?>
                                    <img class="img" src="produktbild.php?id=<?php echo $row['id']; ?>" alt="<?php echo $row['name']; ?>" width="600" height="400">
                              das an dieser Stelle in der Datenbank gespeichertes Bild auszugeben.

                              Mehr nicht.

                              Kommentar

                              Lädt...
                              X