2009-10-12 8 views
0

J'ai une boucle foreach qui est supposée vérifier si une case est cochée par un élément. Si la case est cochée, j'ai besoin de voir si la partie de téléchargement du fichier a une valeur et si c'est le cas, continuez à vérifier le type et la taille du fichier que l'utilisateur essaie de télécharger.Php foreach loop, avec des messages d'erreur en boucle

Actuellement s'il n'y a une erreur avec la première case à cocher alors cela fonctionne très bien, mais pour une raison quelconque s'il y a une erreur avec plus d'un fichier, il ne boucle les résultats à nouveau. Par exemple, s'il y a une erreur avec deux fichiers, cela donnera quatre résultats (listant chaque erreur deux fois) si une erreur avec trois items me donne 6 résultats.

Je suis vraiment nouveau à boucles et je me demande si je dois passer à une boucle et faire quelque chose comme boucle jusqu'à ce que des erreurs égales à zéro.

Voici mon 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> 

Le PHP boucle est comme suit:

$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; 
       } 
      } 
     } 
    } 
} 

Répondre

2

Votre problème peut être que vous itérez

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

pour chaque entrée $remove_images_files, ce que je ne pense pas est ce que vous voulez faire. Si vous prenez la ligne suivante:

foreach ($remove_images_files as $update){ 

et son } correspondant, fait-elle ce que vous voulez faire?

+0

Bizarre, j'aurais pu jurer que j'ai essayé ça mais ça a couté pour régler le problème donc je dois avoir mal fait. Merci pour l'aide. – BandonRandon

+0

Vous êtes les bienvenus. –

Questions connexes