2009-10-12 4 views
0

У меня есть цикл foreach, который должен проверять, проверяется ли флажок элементом. Если флажок установлен, мне нужно проверить, имеет ли часть загрузки файла скрипт значение, и если да, то переходите к проверке типа и размера файла, который пользователь пытается загрузить.Php foreach loop, с сообщениями об ошибках цикла

В настоящее время, если есть первая ошибка с первым флажком, это работает нормально, но по какой-либо причине, если есть ошибка с несколькими файлами, она снова зациклирует результаты. Например, если есть ошибка с двумя файлами, он даст четыре результата (перечисляя каждую ошибку дважды), если ошибка с тремя элементами я получаю 6 результатов.

Я действительно новичок в циклах и задаюсь вопросом, следует ли мне переключиться на цикл for и сделать что-то вроде цикла, пока ошибки не равны нулю.

Вот мой HTML

<ul class="imgPreview"> 
    <li> 
     <a href="#">dialogwarning_pimg4_15_1276648623.png</a> 
     <a href="#" class="edit_project_file"> <img src="images/edit.gif"/></a> 
    </li> 
    <li> 
     <input name="upload_project_images[]" type="file" /> 
    </li> 
    <li> 
     <input name="edit_image[]" type="checkbox" value="dialogwarning_pimg4_15_1276648623.png"/> 
    </li> 
    <li> 
     <a href="#">formatjustifyright_pimg3_15_1276648623.png</a> 
    </li> 
    <li class="edit_project_image"> 
     <input name="upload_project_images[]" type="file" /> 
    </li> 
     <li class ="edit_file_checkbox"> 
     <input name="edit_image[]" type="checkbox" value="formatjustifyright_pimg3_15_1276648623.png"/> 
    </li> 
</ul> 

РНР для петли, как следует:

$remove_images_files = $_POST['edit_image'];  

if(isset($remove_images_files)){ 
    foreach ($remove_images_files as $update){ 
     foreach ($_FILES["upload_project_images"]["type"] as $key => $type) { 
     $upload_project_images = $_FILES["upload_project_images"]["name"][$key]; 
     $upload_project_images_type = $_FILES["upload_project_images"]["type"][$key]; 
     $upload_project_images_size = $_FILES["upload_project_images"]["size"][$key]; 
     $upload_project_image_ext = strtolower(substr($upload_project_images, strrpos($upload_project_images, '.') + 1)); 
      if($upload_project_images != "") { 
       if((!in_array($upload_project_images_type,$upload_permitted_types['mime'])) || (!in_array($upload_project_image_ext,$upload_permitted_types['ext']))) { 
        $errmsg_arr[] = 'Please select a jpg, jpeg, gif, or png image to use as the project image' .$upload_project_images . $upload_project_image_ext; 
        $errflag = true; 
       } 
       elseif($upload_project_images_size > $max_upload_size_bytes) { 
        $errmsg_arr[] = 'Please select an image smaller than '. $max_upload_size_Kbytes .' to use as the project image'; 
        $errflag = true; 
       } 
      } 
     } 
    } 
} 

ответ

2

Ваша проблема может быть, что вы итерация

$_FILES["upload_project_images"]["type"] 

для каждой записи $remove_images_files, который я не думаю, это то, что вы хотите сделать. Если вы берете следующую строку:

foreach ($remove_images_files as $update){ 

и его соответствующий }, он делает то, что вы хотите это сделать?

+0

Странно, я мог бы поклясться, что я попробовал это, но это спрятано, чтобы исправить проблему, поэтому я, должно быть, сделал это неправильно. Спасибо за помощь. – BandonRandon

+0

Добро пожаловать. –

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