2013-09-29 2 views
0

Добрый день!PHP: Как обрабатывать загрузку 2 файлов и вывод

Я начну с того, я только начал изучать PHP, так что успокойтесь на меня ...

В принципе, у меня есть форма, которая позволяет пользователям загружать 2 изображения (наряду с завершением других полей) , При отправке форма вызывает файл PHP (код ниже), который в основном добавляет данные в базу данных и загружает изображения на файловый сервер. Это прекрасно работает для того, что я пытаюсь выполнить. Если у меня возникли проблемы с сообщением о подтверждении.

Поскольку у меня есть 2 отдельных поля для загрузки, у меня в основном есть инструкции 2, подтверждающие, что два файла загружены правильно. Я хотел бы упорядочить это немного, поэтому мне действительно нужно отобразить только одно подтверждающее сообщение.

Любые идеи о том, как я могу оптимизировать это? Я думаю, что код будет выглядеть, если оба файла были загружены успешно, если так, эхо «x», иначе echo «y». Я менее знаком с функцией move_uploaded_file, поэтому я не уверен, могу ли я использовать инструкции пользователя AND ... Любые мысли были бы очень оценены.

//This is the directory where images will be saved 
$target = "path/"; 
$target = $target . basename($_FILES[controlcreative][name]); 
$target2 = "path/"; 
$target2 = $target2 . basename($_FILES[winnercreative][name]); 

$pic=($_FILES['controlcreative']['name']); 
$pic2=($_FILES['winnercreative']['name']); 

$con=mysqli_connect(); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$sql="INSERT INTO experiments (vertical, pagetype, pagename, primarykpitype, primarykpilift, primarysignificant, testobjective, takeawayone, optimizationtype, controlcreative, winnercreative) 
VALUES 
('$_POST[vertical]','$_POST[pagetype]','$_POST[pagename]','$_POST[primarykpitype]','$_POST[primarykpilift]','$_POST[primarysignificant]','$_POST[testobjective]','$_POST[takeawayone]','$_POST[optimizationtype]','$pic','$pic2')"; 

if (!mysqli_query($con,$sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
    } 
echo "1 record added"; 


//Writes the photo to the server 
if(move_uploaded_file($_FILES[controlcreative][tmp_name], $target)) 
{ 

//Tells you if its all ok 
echo "The file ". basename($_FILES[controlcreative][name]). " has been uploaded, and your information has been added to the directory"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 

//Writes the photo to the server 
if(move_uploaded_file($_FILES[winnercreative][tmp_name], $target2)) 
{ 

//Tells you if its all ok 
echo "The file ". basename($_FILES[winnercreative][name]). " has been uploaded, and your information has been added to the directory"; 
} 
else { 

//Gives and error if its not 
echo "Sorry, there was a problem uploading your file."; 
} 


mysqli_close($con); 

ответ

0

Я бы проходное $_FILES, который может сохранить вам код и установить флаг ошибки

$error = false; 
foreach($_FILES as $name => $file) 
{ 
    $target = '/path/to/destination/' . $file['name']; 
    if(!move_uploaded_file($file['tmp_name'], $target)) $error = true; 
} 

Тогда

if(!$error) echo 'All files uploaded'; 
+0

Я на самом деле работал вне ответ ... спасибо за помощь. 'if ((move_uploaded_file ($ _ FILES [controlcreative] [tmp_name], $ target)) && move_uploaded_file ($ _ FILES [winnercreative] [tmp_name], $ target2))' – user2828701

Смежные вопросы