Avatar billede jensclausen Juniormester
06. december 2018 - 22:16 Der er 4 kommentarer og
1 løsning

Problemer med at få vist billeder rigtigt fra MySQL-Db. (Filtypen: blob)

Hej.
Der må være en her i dette forum, der kan hjælpe mig. Jeg skriver følgende i PHP:
<?PHP include_once "serverconnect.php"; ?>
<?PHP

      $sql = "SELECT * FROM store ORDER BY id DESC";
    $result = $conn->query($sql);
    while($data = $result->fetch_assoc())
    {
    echo "<tr><td>".$data["id"]." </td><td>".$data["name"]." </td><td><img src=".$data["image"]." width=\"100\" height=\"100\" /></td></tr>";   
    }
    header("Content-type: image/jpeg");
  ?>
image er gemt i Database under typen: blob.
Det jeg 'får ud' på skærmen er:
��HPhotoshop 3.08BIMZ%G8BIM%�.... det fortsætter næsten i det uendelige.
id og navn skrives korrekt ud men ikke billederne. Hvad skriver jeg forkert?
PFT
Jens
Avatar billede arne_v Ekspert
06. december 2018 - 22:43 #1
Jeg forstaar ikke den kode.

src attribut paa img skal indeholde en URL paa image ikke image.

Header content type skal saettes inden output starter.

Du skal formentligt have 2 PHP filer - en til siden og en til at hente image med.
Avatar billede jensclausen Juniormester
07. december 2018 - 11:31 #3
Tak for svar, meeeen det virker ikke. ØV!
Jeg har forsøgt følgende kode:
<?PHP include_once "serverconnect.php"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<table border="1">
<?PHP
    $sql = "SELECT * FROM store ORDER BY id DESC LIMIT 0,1"; //" . $last_id
    $result = $conn->query($sql);
    while($data = $result->fetch_assoc())
    {
  // echo "<tr><td>".$data["id"]." </td><td>".$data["name"]." </td><td><img src=".$data["image"]." width=\"200\" height=\"200\" /></td></tr>";

header("Content-type: image/jpeg");
    echo "<tr><td>".$data["id"]." </td><td>".$data["name"]." </td><td><img src=data:image/jpeg;base64,'.base64_encode($data['image'] ) width=\"200\" height=\"200\" /></td></tr>";
    }
  ?>
</table>
</body>
</html>
men der kommer intet input.
Har du/I mulighed for at hjælpe mig :)
Jens
Avatar billede olsensweb.dk Ekspert
07. december 2018 - 12:56 #4
>men der kommer intet input.
skal det forståes sådan at der ikke kommer noget i database ??


kig på dette som inspiration, coden skal sikres før brug i production.


for at gemme i databasen
<?php
// https://www.youtube.com/watch?v=-tldcpFO6ds
// https://www.webslesson.info/2016/10/insert-and-fetch-images-from-mysql-database-in-php.html

if(isset($_POST['insert']) ){
require_once "serverconnect.php";
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$name = $_FILES['image']['name'];


$query = "INSERT INTO store (name, image) VALUES('$name','$image')"; 
$qry = mysqli_query($conn, $query);   
}
?>

<!DOCTYPE html> 
<html> 
      <head> 
     
      </head> 
      <body> 
          <br /><br /> 
          <div> 
                <h3 align="center">Insert and Display Images From Mysql Database in PHP</h3> 
                <br /> 
                <form method="post" enctype="multipart/form-data" action=""> 
                    <input type="file" name="image" id="image" /> 
                    <br /> 
                    <input type="submit" name="insert" id="insert" value="Insert"> 
                </form> 
               
          </div> 
      </body> 
</html> 



for at vise indholdet fra databasen
<?php require_once "serverconnect.php"; ?>
<!DOCTYPE html> 
<html> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<table border="1">
<?php
    $sql = "SELECT * FROM store ORDER BY id DESC ";
    $result = $conn->query($sql);
    while($data = $result->fetch_assoc())
    {
    // header("Content-type: image/jpeg");   
    echo '<tr><td>'.$data["id"] . '</td><td>'.$data["name"]. '</td><td><img src=data:image/jpeg;base64,'.base64_encode($data["image"] ).'></td></tr>';
    }
  ?>
</table>
</body>
</html>


men du bør overveje at ligge billederne i en seperat folder og ikke i databasen, og i din database bare have et felt hvor du henvisser til deres url.

at ligge billederne som blob får din database til at svumle voldsomt op.
Avatar billede jensclausen Juniormester
07. december 2018 - 23:33 #5
Hej Olsensweb.
Du er en MEGASTJERNE og mange tak for hjælpen.
God weekend.
Jens
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester