Загрузка изображения не извлекает $ _GET из формы

#php

#php

Вопрос:

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

tutorLanding.php

                <div class='upload-form'>
                       <form action='changeProfile.php?studentNumber='$studentID' method='POST' enctype='multipart/form-data'>
                       Change Profile Image:
                       <input type='file' name='fileToUpload' id='fileToUpload'>
                       <input type='submit' value='Upload Image' name='submit'>
                       <br>                      
                      </form>                     
                      </div>";
                    }
                } else {
                    echo "<div class = 'imageWrapper'>
                        <img src = '/img/avatar/defaultAvatar.png' alt = 'your image'/>
                        </div>";
                }
  

Я пытаюсь передать $ _GET из:

<form action='changeProfile.php?studentNumber='$studentID' method='POST' enctype='multipart/form-data'>

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

Тем не менее, это вообще не работает, когда я добираюсь changeProfile.php . Путь к файлу не перемещается в базу данных, и изображение не перемещается в мою папку. У меня включены все ошибки PHP, но я получаю только undefined index: studentID то, что заставляет меня поверить $_GET , что это проблема. Даже когда я жестко кодирую значение ‘40061947’ (пользователь 1), as $studentID по-прежнему не проходит.

Чего мне здесь не хватает?

changeProfile.php

 $studentID = $_GET['studentNumber'];
$userQuery = "SELECT * from users WHERE studentNumber = '$studentID'";
$resultQuery = (mysqli_query($conn, $userQuery));


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

    $fileName = $_FILES['fileToUpload']['name'];
    $maxsize = 2097152;
    $format = array('image/jpeg');

    if ($_FILES['fileToUpload']['size'] >= $maxsize) {
        $error_1 = 'File Size too large';
        echo '<script>alert("' . $error_1 . '")</script>';
    } elseif ($_FILES['fileToUpload']['size'] == 0) {
        $error_2 = 'Invalid File';
        echo '<script>alert("' . $error_2 . '")</script>';
    } elseif (!in_array($_FILES['fileToUpload']['type'], $format)) {
        $error_3 = 'Format Not Supported. Only .jpeg files are accepted';
        echo '<script>alert("' . $error_3 . '")</script>';
    } else {

        $target = 'img/profile_images';
        $tempFileName = $_FILES["fileToUpload"]["tmp_name"];
        $fileTarget = $target . $fileName;
        $result = move_uploaded_file($tempFileName, $fileTarget);


        if ($result) {
            echo "Your file <html><b><i>" . $fileName . "</i></b></html> has been successfully uploaded";
            $insertPath = "INSERT INTO users (imagePath) VALUES ('$fileName') WHERE studentNumber ='$studentID'";
            echo "$studentID";
            $resultQuery = (mysqli_query($conn, $insertPath));
        } else {
            echo "Sorry !!! There was an error in uploading your file";
        }
    }
  

Я приложил скриншоты, чтобы показать вам, что именно происходит. Спасибо за любые советы! Ошибка неопределенного индекса

Комментарии:

1. $insertPath = "INSERT INTO users (imagePath) VALUES ('$fileName') WHERE studentNumber ='$studentID'"; разве это не должно быть update вместо insert? Поскольку вы уже пытаетесь получить информацию о пользователе из таблицы базы данных users, значит, экземпляр пользователя уже существует?

Ответ №1:

$insertPath = "INSERT INTO users (imagePath) VALUES ('$fileName') WHERE studentNumber ='$studentID'"; разве это не должно быть update вместо insert? Поскольку вы уже пытаетесь получить информацию о пользователе из таблицы базы данных users, значит, экземпляр пользователя уже существует? Попробуйте изменить этот код на $insertPath = "UPDATE users SET imagePath = '".$filename."' WHERE studentNumber = '".$studentID."'");

Комментарии:

1. да, обновление — это то, что я должен был делать! Сработало как шарм, как только я получил $studentID пропущенный. Спасибо!

Ответ №2:

Похоже, у вас нет закрывающих кавычек в объявлении формы:

 <form action='changeProfile.php?studentNumber='$studentID' method='POST' enctype='multipart/form-data'>
  

КАК вы можете видеть, ваше действие формы не включает ваш $ StudentID. Попробуйте изменить его на

 <form action="changeProfile.php?studentNumber={$studentID}" method='POST' enctype='multipart/form-data'>
  

Комментарии:

1. Спасибо @myxobek, который отлично сработал, не мог понять, почему он не был отправлен. Так просто. Очень признателен!