Не загружается изображение в базу данных и в указанный путь

Рейтинг: 0Ответов: 1Опубликовано: 15.08.2023

У меня сайт в котором есть блок новостей и каталог товаров. Так же есть админ панель, через который должен загружать информация. И не понимаю, где именно пробел что фотография не идет в серверную часть.

    <?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();
    }
}
?>

Ответы

▲ 0

Добавьте в ajax строчки

processData: false,
contentType: false,