#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, который отлично сработал, не мог понять, почему он не был отправлен. Так просто. Очень признателен!