Я пытаюсь вставить несколько изображений в базу данных за транзакцию, но каждое изображение имеет свои собственные типы ввода. Но когда я отправляю форму, я получаю сообщение об ошибке $file_upload = $_FILES['file_upload'.$i];
из моего post.php является «неопределенный индекс». Являются ли file-upload1
, file-upload2
, file-upload3
из моего HTML не правильный способ сделать это? Пожалуйста помоги. Спасибо.
Мой PHP-код:
include 'dbcontroller.php';
if(isset($_POST['submit'])) {
for ($i = 1; $i <= 3; $i++) {
$file_upload = $_FILES['file_upload'.$i];
$file=(rand(1000,100000)."-".$file_upload['name'.$i]);
$type=$file_upload['type'.$i];
$size=$file_upload['size'.$i];
$loc=$file_upload['tmp_name'.$i];
$new_size=$size/1024; // file size in KB
// make file name in lower case
$new_file_name = strtolower($file);
// make file name in lower case
$final_file=str_replace(' ','-',$new_file_name);
if(move_uploaded_file($loc, '..admin/officers-avatars/'.$final_file)) {
$result = mysqli_query($conn,"INSERT INTO images VALUES ('$final_file', '$new_size', '$type')")
or die(mysqli_error($conn));
}
}
}
Ниже мой HTML
<form action="post.php" method="post" enctype="multiple/form-data">
<input type="file" name="file-upload1" /><br><br>
<input type="file" name="file-upload2" /><br><br>
<input type="file" name="file-upload3" /><br><br>
<input type="submit" name="submit" value="SAVE"/>
</form>
У вас есть опечатка: Изменить enctype="multiple/form-data"
за enctype="multipart/form-data"
,
Во всяком случае, я бы предложил вам использовать массив в name
атрибут вместо:
<form action="post.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileupload[]" /><br><br>
<input type="file" name="fileupload[]" /><br><br>
<input type="file" name="fileupload[]" /><br><br>
<input type="submit" name="submit" value="SAVE"/>
</form>
Затем в PHP вы используете это:
foreach($_FILES['fileupload'] as $file) {
....
}
Или вы можете использовать несколько:
<input type="file" name="fileupload[]" multiple /><br><br>
Других решений пока нет …