Не загружается изображение в базу данных и в указанный путь
У меня сайт в котором есть блок новостей и каталог товаров. Так же есть админ панель, через который должен загружать информация. И не понимаю, где именно пробел что фотография не идет в серверную часть.
<?php
include "include/db.php";
include "partials/header.php";
?>
<div class="content-body">
<div class="container">
<div class="row">
<div class="col-xl-9 col-xxl-10">
<div class="card">
<div class="card-body">
<div class="row align-items-center">
<nav>
<div class="nav nav-tabs" id="nav-tab" role="tablist">
<a class="nav-link" id="nav-home-tab" data-bs-toggle="tab" data-bs-target="#nav-home" role="tab" aria-controls="nav-home" aria-selected="true">На казахском</a>
<a class="nav-link" id="nav-profile-tab" data-bs-toggle="tab" data-bs-target="#nav-profile" role="tab" aria-controls="nav-profile" aria-selected="false">На русском</a>
<a class="nav-link" id="nav-contact-tab" data-bs-toggle="tab" data-bs-target="#nav-contact" role="tab" aria-controls="nav-contact" aria-selected="false">На английском</a>
</div>
</nav>
<div class="tab-content" id="nav-tabContent">
<div class="tab-pane fade" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab">
<form id="addnews" class="addnews-form" method="POST" enctype="multipart/form-data">
<div class="form-group">
<input type="text" id="news_title-kaz" name="news_title-kaz" placeholder="Заголовок на казахском" class="form-control">
<textarea type="text" id="news_text-kaz" name="news_text-kaz" style="height: 300px;" placeholder="Текст на казахском" class="form-control"></textarea>
</div>
</div>
<div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab">
<div class="form-group">
<input type="text" id="news_title-rus" name="news_title-rus" placeholder="Заголовок на русском" class="form-control">
<textarea type="text" id="news_text-rus" name="news_text-rus" style="height: 300px;" placeholder="Текст на русском" class="form-control"></textarea>
</div>
</div>
<div class="tab-pane fade" id="nav-contact" role="tabpanel" aria-labelledby="nav-contact-tab">
<div class="form-group">
<input type="text" id="news_title-eng" name="news_title-eng" placeholder="Заголовок на английском" class="form-control">
<textarea rows="25" id="news_text-eng" name="news_text-eng" style="height: 300px;" placeholder="Текст на английском" class="form-control"></textarea>
</div>
<div class="form_control">
<label for="">Выбрать картинку</label>
<input type="file" name="news_thumbnail" id="news_thumbnail">
</div>
<button type="submit" name="submit" class="btn btn-primary">Добавить</button>
</form>
</div>
<div id="responseMessage"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<?php
include 'partials/footer.php';
?>
<script>
var triggerTabList = [].slice.call(document.querySelectorAll('.nav-link'));
triggerTabList.forEach(function (triggerEl) {
var tabTrigger = new bootstrap.Tab(triggerEl);
triggerEl.addEventListener('click', function (event) {
event.preventDefault();
tabTrigger.show();
});
});
$('.addnews-form').submit(function(event) {
event.preventDefault();
var formData = $(this).serialize();
$.ajax({
type: 'POST',
url: 'add_news_logic.php',
data: formData,
success: function(response) {
$('#responseMessage').html(response);
}
});
});
</script>
А здесь у меня серверная часть кода
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
include "include/db.php";
$news_title_kaz = $_POST['news_title-kaz'];
$news_text_kaz = $_POST['news_text-kaz'];
$news_title_rus = $_POST['news_title-rus'];
$news_text_rus = $_POST['news_text-rus'];
$news_title_eng = $_POST['news_title-eng'];
$news_text_eng = $_POST['news_text-eng'];
$target_dir = "images/";
$target_file = $target_dir . basename($_FILES["news_thumbnail"]["name"]);
$uploadOk = 1;
// Debug output
echo "Uploaded file: " . $_FILES["news_thumbnail"]["name"] . "<br>";
echo "File type: " . $_FILES["news_thumbnail"]["type"] . "<br>";
echo "File size: " . $_FILES["news_thumbnail"]["size"] . "<br>";
echo "Temporary file path: " . $_FILES["news_thumbnail"]["tmp_name"] . "<br>";
$allowed_mime_types = array("image/jpeg", "image/png", "image/gif");
if (!in_array($_FILES["news_thumbnail"]["type"], $allowed_mime_types)) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
if ($uploadOk) {
if (move_uploaded_file($_FILES["news_thumbnail"]["tmp_name"], $target_file)) {
$stmt = $connection->prepare("INSERT INTO news (news_title_kaz, news_text_kaz, news_title_rus, news_text_rus, news_title_eng, news_text_eng, news_image) VALUES (?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("sssssss", $news_title_kaz, $news_text_kaz, $news_title_rus, $news_text_rus, $news_title_eng, $news_text_eng, basename($target_file));
if ($stmt->execute()) {
echo "News added successfully!";
} else {
echo "Error executing database query: " . $stmt->error;
}
$stmt->close();
} else {
echo "Error uploading file: " . $_FILES["news_thumbnail"]["error"];
}
$connection->close();
}
}
?>
Источник: Stack Overflow на русском