Ankündigung

Einklappen
Keine Ankündigung bisher.

Image aus Datenbank auslesen und sichtbar machen.

Einklappen

Neue Werbung 2019

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?
        The string "()()" is not palindrom but the String "())(" is.

        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