Как реализовать прекращение цикла foreach при загрузке изображений?

Написал такой исходник
<?php
	session_start();
	require_once 'app_config.php';
	require_once 'database_connect.php';
	$user_id = $_SESSION['user_id'];
	$path_error="album.php?error_msg=";
	$upload_dir =  "/Applications/MAMP/htdocs" . SITE_ROOT . "uploads/";
	foreach ($_FILES['pic']['error'] as $key => $error) {
		if ($error == UPLOAD_ERR_OK) {
	        is_uploaded_file($_FILES['pic']['tmp_name'][$key]) or error($path_error,"запрещенный запрос");
			getimagesize($_FILES['pic']['tmp_name'][$key]) or error($path_error,"неверный формат изображения");
			$now = time();
				while (file_exists($upload_filename = $upload_dir . $now . '-' . $_FILES['pic']['name'][$key])){
					$now++;
				}
			move_uploaded_file($_FILES['pic']['tmp_name'][$key], $upload_filename) or error($path_error,"ошибка загрузки");
	    	$insert_sql = "INSERT INTO album (author_photo_id, path_photo) VALUES ('{$user_id}', '{$upload_filename}');";
			mysql_query($insert_sql)  or error($path_error,"ошибка сохранения");
	    }
	    else {
	    	$php_errors = array(1 => 'Превышен макс. размер файла, указанный в php.ini',
                   2 => 'Превышен макс. размер файла(1Mb)',
                   3 => 'Была отправлена только часть файла',
                   4 => 'Файл для отправки не был выбран.');
	    	error($path_error,$php_errors[$_FILES['pic']['error'][$key]]);
	    }
	}
	header("Location: album.php?succes_msg=фото загружены");
?>


Не могу понять, почему, если загружается несколько файлов и в одном с них ошибка, не грузятся остальные. Для разъяснения функции error прилагается
function error($path_error,$error){
	header("Location:" . $path_error. "" .$error."");
	exit;
}
  • Вопрос задан
  • 2677 просмотров
Пригласить эксперта
Ответы на вопрос 5
@v_prom
может потому что exit?
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
При вызове функции error происходит выход (exit) из цикла и из программы вообще.
Ответ написан
Комментировать
@ShVad
Собирайте все ошибки в массив, потом выводите их.
Ответ написан
Комментировать
Romastr
@Romastr Автор вопроса
ну это я и сам понимаю. а вот пример как мне создать массив и записывать в него значение типа имя файла и ключ ошибки. что бы потом сделать вывод что загрузилось что нет и по какой причине
Ответ написан
hadra
@hadra
проверку делайте... или задайте условие
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽