8768 sujets

Développement web côté serveur, CMS

Bonsoir,

Cela fait des jours que je bloque sur ce script qui permet à la fois de vérifier les erreurs et d'uploader plusieurs images.
Mais il fonctionne bien avec une image, mais si je veux ajouter deux images ou plus, seule la première image s'upload 2 fois ou plus selon le nombre d'images.

Je n'arrive pas à comprendre ce qui ne va pas.

Voici le script :


foreach ($files ['tmp_name'] as $key => $tmp_name)
		{
		
		$type = $files ['type'][$key];
		$error = $files ['error'][$key];
		$name = $files ['name'][$key];
		
		$extension_autorisees = array (
									'jpg',
									'jpeg',
									'png',
									'gif'
									);
									
		$extension = basename($type);
		
			if (in_array($extension, $extension_autorisees))
			{
			
				$images_size = getimagesize($tmp_name);
			
				if(($images_size[0] < MAX_WIDTH) OR ($images_size[1] < MAX_HEIGHT))
				{
					if ($error === 0) 
					{
					
						
					//Déplacer le fichier
					$upload_dir = IMAGE_DIR_PATH;
					
					$moveImage = move_uploaded_file ($tmp_name, $upload_dir.'/'.$name);
					
						if ($moveImage === true)
						{
				
						$descr = '';
						$title = '';
				
						$insertImage = $this -> insertImage ($title, $descr, $name);
						
							if ($insertImage == true)
							{
							return true;
							}
							else
							{
							$msg_error = 'L\'image n\'a pas pu être enregistrée.';
							return $msg_error;
							}
						}	
						else
						{
						$msg_error = 'L\'image n\'a pas pu être téléchargée.';
						return $msg_error;
						}
					
					}
					else
					{
					$msg_error = 'Une erreur s\'est produite lors du téléchargement.';
					return $msg_error;
					}
					
				}
				else
				{
				$msg_error = 'Les dimensions de l\'image sont trop grandes.';
				return $msg_error;
				}
			}
			else
			{
			$msg_error = 'Format non accepté';
			return $msg_error;
			}


Merci pour votre aide.
Salut
Euh vite fait comme ça de mémoire les images sont dans $_FILES et non dans $files
Bonjour pchli,

Oui c'est une bonne remarque. J'ai oublié de préciser qu'il s'agit d'une méthode uupload ne classe Image. En fait $files = $_FILES ['upload'];

Je me demande si le p Smiley sweatdrop roblème ne viendrait pas des return ...
Modifié par anthyllide (22 Mar 2015 - 07:54)
Ok Smiley smile

Il faudrait en effet debugger Smiley smile

commence par mettr ene commentaire les return.

Puis dans un second dans fit un print_r de $files.

et enfin fait un écho de temp_name à chaque tour de la boucle tu verra lequel pose problème
Bonsoir à tous, j'ai fini par trouver pourquoi la boucle foreach ne s'executait pas dés le début. En fait, ce sont les "return" qui font sortir de la boucle. J'ai donc sorti les "return" de la boucle et ça fonctionne. Smiley biggrin