Загрузка двух изображений в php одновременно

77
7

У меня есть два изображения, которые я хочу загрузить на сервер. Если оба файла установлены в html, то первый запрос должен выполняться, если выбрано изображение1, а изображение2 не является вторым запросом shoud execute, если изображение1 не выбрано, а inage2 выбран, тогда третий запрос должен выполняться, если изображение не выбрано как в image1, так и в image2, тогда запрос 4 должен выполняться.

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

Проблема, с которой я сталкиваюсь, заключается в том, что

Когда я не выбираю какой-либо файл в image1 nad image2, первый код выполняется там, вставляя эмоциональное значение изображения 1 и image2, которое не должно быть.

Есть ли более чистый и эффективный способ сокращения дублирования кода.

if (isset($_FILES['newsthumb']) && isset($_FILES['newsmain'])) {

$title = mysql_real_escape_string(trim($_POST['title']));
$body = mysql_real_escape_string(trim($_POST['body']));
$mainimage_title = mysql_real_escape_string(trim($_POST['mainimage_title']));
$thumbimage = $_FILES['newsthumb'];
$mainimage = $_FILES['newsmain'];

$unique = time();

$thumbname = strtolower($thumbimage['name']);
$mainmane = strtolower($mainimage['name']);

$thumbname = preg_replace("/[^A-Z0-9._-]/i", "_", $thumbname);
$mainmane = preg_replace("/[^A-Z0-9._-]/i", "_", $mainmane);

$thumbname = mysql_real_escape_string($thumbname);
$mainmane = mysql_real_escape_string($mainmane);

$uploaddir = "images/newsimage/";

$thumbsuccess = move_uploaded_file($thumbimage["tmp_name"], $uploaddir.$thumbname);
$mainsuccess = move_uploaded_file($mainimage["tmp_name"], $uploaddir.$mainmane);

$newsarticle = "UPDATE news
SET title = '$title',
body = '$body',
mainimage_title = '$mainimage_title' ,
thumbnail = '$thumbname',
mainimage = '$mainmane',
editdate = NOW()
WHERE id = '$article_id'";
mysql_query($newsarticle) or die (mysql_error());
}

  if (!isset($_FILES['newsthumb']) && isset($_FILES['newsmain'])) {

$title = mysql_real_escape_string(trim($_POST['title']));
$body = mysql_real_escape_string(trim($_POST['body']));
$mainimage_title = mysql_real_escape_string(trim($_POST['mainimage_title']));
// Commented out since it is not defined anywhere in your original posted code.
// You will have to implement that in.
$mainimage = $_FILES['newsmain'];
$unique = time();
$mainmane = strtolower($mainimage['name']);
$mainmane = preg_replace("/[^A-Z0-9._-]/i", "_", $mainmane);
$mainmane = mysql_real_escape_string($mainmane);
$uploaddir = "images/newsimage/";
$mainsuccess = move_uploaded_file($mainimage["tmp_name"], $uploaddir.$mainmane);
$newsarticle = "UPDATE news
SET title = '$title',
body = '$body',
mainimage_title = '$mainimage_title' ,
mainimage = '$mainmane',
editdate = NOW()
WHERE id = '$article_id'";
mysql_query($newsarticle) or die (mysql_error());
}

if (isset($_FILES['newsthumb']) && (!isset($_FILES['newsmain']))) {

$title = mysql_real_escape_string(trim($_POST['title']));
$body = mysql_real_escape_string(trim($_POST['body']));
$mainimage_title = mysql_real_escape_string(trim($_POST['mainimage_title']));
// Commented out since it is not defined anywhere in your original posted code.
// You will have to implement that in.
$thumbimage = $_FILES['newsthumb'];
$unique = time();
$thumbname = strtolower($thumbimage['name']);
$thumbname = preg_replace("/[^A-Z0-9._-]/i", "_", $thumbname);
$thumbname = mysql_real_escape_string($thumbname);
$uploaddir = "images/newsimage/";
$thumbsuccess = move_uploaded_file($thumbimage["tmp_name"], $uploaddir.$thumbname);

$newsarticle = "UPDATE news
SET title = '$title',
body = '$body',
mainimage_title = '$mainimage_title' ,
thumbnail = '$thumbname',
editdate = NOW()
WHERE id = '$article_id'";
mysql_query($newsarticle) or die (mysql_error());
}

if (!isset($_FILES['newsthumb']) && (!isset($_FILES['newsmain']))) {

$title = mysql_real_escape_string(trim($_POST['title']));
$body = mysql_real_escape_string(trim($_POST['body']));
$mainimage_title = mysql_real_escape_string(trim($_POST['mainimage_title']));
$newsarticle = "UPDATE news
SET title = '$title',
body = '$body',
mainimage_title = '$mainimage_title' ,
editdate = NOW()
WHERE id = '$article_id'";
mysql_query($newsarticle) or die (mysql_error());
}

спросил(а) 2021-01-25T14:20:40+03:00 4 месяца, 2 недели назад
1
Решение
63

Возможно, создав функцию, которая получает файл в параметре и его материалах. Это поможет без дублирования.

Для проверки того, какой файл выбран или нет:

if ($_FILES["file"]["error"] > 0)

Дополнительные пояснения:

function uploadASingleFile($file){ 
// Do your stuff here for the upload (moving the file, sql request etc.)
}

Затем проверьте файлы, если они выбраны (используя ["error"]) и вызовите функцию

if($_FILES["file1"]["error"] == 0){
uploadASingleFile($_FILES["file1"]); // Obviously, handle errors...
}

if($_FILES["file2"]["error"] == 0){
uploadASingleFile($_FILES["file2"]); // Obviously, handle errors...
}

Код менее продуманный и понятный. Отвечаю ли я на ваш вопрос?

ответил(а) 2021-01-25T14:20:40+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема