Я пытаюсь загрузить путь к изображению в БД в таблице со следующей структурой:
![enter image description here](https://i.stack.imgur.com/urYKb.png)
Это 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](https://i.stack.imgur.com/ngzrJ.png)
Ошибка:
![enter image description here](https://i.stack.imgur.com/YotGm.png)
Когда я нажимаю publish
, появляется предупреждение об ошибке.
Тогда> 34 - if(move_uploaded_file($_FILES['image']['tmp_name'], $this->target))
На странице, где я пытаюсь это показать:
зависит от размера.
РЕДАКТИРОВАТЬ
Это то, что я сделал в <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 в таблице БД - это путь к изображению. Теперь мне не нужно жестко закодированное расширение.