Я не могу отобразить изображение из моей базы данных - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь создать систему онлайн-покупок, которая будет отображать и добавлять товар с изображением.Я смотрел видеообзор и следовал ему, но не могу отобразить изображение из своей базы данных.

индексный файл

$sql = "SELECT * FROM tblproducts ORDER BY placeOrder DESC";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt , $sql)) {
  echo "SQL statement failed!";
} else {
  mysqli_stmt_execute($stmt);
  $result = mysqli_stmt_get_result($stmt);

  while ($row = mysqli_fetch_assoc($result)){

    echo"
   <div><img src='".$row['image']."' uploads/></div>
    <h3>".$row["imageTitle"]."</h3>
    <p>".$row["prod_description"]."</p>";

  }
}

загрузить файл

    if (isset($_POST['submit'])) {

    $newFileName = $_POST['filename'];
    if (empty($newFileName)) {
    $newFileName = "tblproducts";
    } else {
    $newFileName = strtolower(str_replace(" ","-", $newFileName));
    }
    $imageTitle = $_POST['filetitle'];
    $imageDesc = $_POST['filedesc'];

    $file = $_FILES['file'];

    $fileName = $file["name"];
      $fileType = $file["type"];
      $fileTempName = $file["tmp_name"];
      $fileError = $file["error"];
      $fileSize = $file["size"];

  $fileExt = explode(".", $fileName);
  $fileActualExt = strtolower(end($fileExt));

  $allowed = array("jpg", "jpeg", "png");

  if (in_array($fileActualExt, $allowed)) {
    if ($fileError === 0) {
      if ($fileSize < 2000000) {
      $imageFullName = $newFileName . "." . uniqid("", true) . "." . $fileActualExt;
      $fileDestination = "uploads/" . $imageFullName;


        include_once "conn.php";

        if (empty($imageTitle) || empty($imageDesc)) {
        header("Location: ../index.one.php?upload=empty");
        exit();
      }else{
          $sql = "SELECT * FROM tblproducts;";
          $stmt = mysqli_stmt_init($conn);
          if (!mysqli_stmt_prepare($stmt, $sql)) {
            echo "SQL statement failed! ";
          } else {
            mysqli_stmt_execute($stmt);
            $result = mysqli_stmt_get_result($stmt);
            $rowCount = mysqli_num_rows($result);
            $setImageOrder = $rowCount + 1;

            $sql = "INSERT INTO tblproducts (imageTitle, prod_description, image, placeOrder) VALUES (?, ?, ?, ?);";
            if (!mysqli_stmt_prepare($stmt, $sql)) {
              echo "SQL statement failed! ";
            } else {
              mysqli_stmt_bind_param($stmt, "ssss",$imageTitle, $imageDesc, $imageFullName, $setImageOrder);
              mysqli_stmt_execute($stmt);

              move_uploaded_file($fileTempName, $fileDestination);

            header('location:index.one.php?productadded');

Фотографиисохраняются в файле назначения и так же, как данные в базе данных.Все детали отображаются за исключением изображения.

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Вы проверили исходный код своей страницы и посмотрели, что вызывается вашим кодом?

Мне это кажется подозрительным, так как у вас есть изображение, полученное в результате запроса к базе данных, а затем добавлено / помечено в концекоторый находится за пределами ''

<div><img src='".$row['image']."' uploads/></div>

Должно быть:

<div><img src='uploads/".$row['image']."'></div>
0 голосов
/ 14 октября 2018

Вам нужно выбрать данные изображения и отправить их с правильным типом пантомимы и т. Д.

Вот что я делаю для файловых вложений, чтобы принудительно загрузить

<?php

// gives me executeQuery which does pdo prepared query and returns an array
// where [0] is true or false, and [1] is either error message (if 0 false)
// or [1..N] are the rows returned from a select
include('PDO.inc.php');

$q="SELECT file_data, file_mime, file_size, file_name FROM fileStorage where pk=?";
$a=array(33);
$res=executeQuery($q,$a);
if(!$res[0]){
    print("<h2><font color=red>Error</font> ".$res[1]."</h2>");
    exit;
}

header("Content-length: ".$res[1]['file_size']);
header("Content-type: ".$res[1]['file_type']);
header("Content-Disposition: attachment; filename=".$res[1]['file_name']);
echo $res[1]['file_data'];
?>

Если выЕсли вы хотите сделать что-то вроде встраивания изображений в веб-страницу, а не принудительно «сохранить как ...», вы можете определить, какой тип изображения основан на сохраненном типе mime, а затем использовать соответствующий материал ImageMagick, например imagecreatefrompng (),отправьте соответствующий заголовок содержимого, а затем отправьте сами данные изображения с помощью imagepng ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...