IMG путь к БД, а затем показать его - PullRequest
1 голос
/ 22 апреля 2020

Я пытаюсь загрузить путь к изображению в БД в таблице со следующей структурой:

enter image description here

Это HTML (я не сделал включите другие группы форм, только изображение одно.):

<?php 

include "src/post/Image.php";

$connection = new Db();
$conn = $connection->connect();

$image = new Image();
$img = "";

$query = "SELECT * FROM category";
$result = mysqli_query($conn, $query);

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

    $img = $image->insertimg();

}

?>


<form role="form" method="post" enctype="multipart/form-data">

<div class="form-group">

    <label for="image">
        File input
    </label>

    <input type="file" name="image" class="form-control-file" id="image" required>

</div>

<button type="submit" name="publish" class="btn btn-dark">
    Publish
</button>

</form>


<?php

$data = "SELECT * from post" or die(mysqli_error());

$result1 = mysqli_query($conn, $data);

while($info = mysqli_fetch_array($result1)){

    echo "<tr>";
    echo "<td><img src='images/$info[0].jpg'></td>";
    echo "</tr>\n";

}

?>

И это класс:

<?php

include "src/db/Db.php";


class Image{

public $target = "images/";
public $title;
public $category;
public $description;
public $text;
public $pic;

public function insertimg(){

    $connection = new Db();
    $conn = $connection->connect();

    $this->target = $this->target . basename($_FILES['image']['name']);

    $query = $conn->prepare("INSERT INTO post(title, category, description, text, image) 
    VALUES (?, ?, ?, ?, ?)");
    $query->bind_param('sssss', $this->title, $this->category, $this->description, $this->text, $this->pic);

    $this->title = $_POST['title'];
    $this->category = $_POST['selectcategory'];
    $this->description = $_POST['description'];
    $this->text = $_POST['text'];
    $this->pic = ($_FILES['image']['name']);

    $query->execute();

    if(move_uploaded_file($_FILES['image']['tmp_name'], $this->target)){

        echo "<script> alert('Image inserted into database.') </script>";

    } else{

        echo "<script> alert('Error.') </script>";

    }

}

}


?>

Последнее, это моя «файловая структура» (я публикую это, потому что мне кажется, я допустил какую-то ошибку "path"):

enter image description here

Ошибка:

enter image description here

Когда я нажимаю publish, появляется предупреждение об ошибке.

Тогда> 34 - if(move_uploaded_file($_FILES['image']['tmp_name'], $this->target))

На странице, где я пытаюсь это показать:

enter image description here зависит от размера.

РЕДАКТИРОВАТЬ

Это то, что я сделал в <img>:

echo "<td><img src='src/post/images/" .$info[0].".png' /></td>";

Жестко закодировано .png, потому что мой файл изображения имеет это расширение.

Поэтому при открытии изображения на новой странице путь будет marenews/src/post/images/14.png

, и в этом способ его работы.

Как от этого избавиться?

ПОСЛЕДНИЕ РЕДАКТИРОВАТЬ:

Я сделал это. (var_dump спас меня)

 echo "<td><img src='src/post/images/" .$info[5]."' /></td>";

[5] или # 6 в таблице БД - это путь к изображению. Теперь мне не нужно жестко закодированное расширение.

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