[php]upload 2 images

Bonjour,
voila je cherche un code pour pouvoir uploader 2 images en même temps.... vous allez me dire regarde sur google.... c'est ce que j'ai fait... mais pour être franc je n'ai pas tout compris.... je débute en php et la j'avoue que je suis perdu !!!

merci de votre aide....
chris

12 réponses

  1. for ($i = 0; $i < count($_FILES['userfile']['name']); $i++)
    {
    	if (isset($_POST['posted'])) // Regarde ici, si dans ton formulaire t'as un <input type="hidden" name="posted"> et que le form est en action="POST"
    	{
    		$content_dir = 'upload/'; // Vérifie que ce dossier existe
    		$tmp_file = $_FILES['userfile']['tmp_name'][$i];
    		$nom_file = $_FILES['userfile']['name'][$i];
    		if (!is_uploaded_file($tmp_file))
    			exit('Le fichier est introuvable');
    		
    		$type_file = $_FILES['userfile']['type'];
    		$allowedExt = array('jpg', 'jpeg', 'bmp', 'gif', 'png');
    		if (in_array(strtolower($type_file), $allowedExt))
    			exit('Le fichier n\'est pas une image');
    		
    		$name_file = $_FILES['userfile']['name'];
    		if (preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file))
    			exit('Nom de fichier non valide');
    		
    		if (!move_uploaded_file($tmp_file, $content_dir.$name_file))
    			exit('Impossible de copier le fichier dans '.$content_dir);
    		
    		echo 'Le fichier a bien été uploadé';
    	}
    }
    1. Personne ne sait comment faire? (j'ai poursuivi la conversation... comme ça on voit ce qui c'est passer avant par rapport.... )

      merci pour votre aide

      Chris
      1. hey c'est encore moi !!! je voudrais savoir comment faire pour enregistrées le chemin de ces 2 photos dans ma base de données. j'ai donc 2 champs dans ma BDD, photo et photo_grand et je ne sais pas comment lui dire que la première image uploader c'est pour le champs photo et l'autre pour le champ photo_grand...

        encore merci de votre aide

        Chris
        1. c'est cool ça marche !!!!
          en effet je n'avais pas <input type="hidden" name="posted">
          merci de ton aide !!!

          Chris
          1. je viens de mettre les [$i] mais ça ne marche toujours pas... rien ne s'affiche et lupload n'a pas lieu

            Chris
            1. $tmp_file = $_FILES['fichier']['tmp_name'];
              $nom_file=$_FILES['fichier']['name']; 


              Tu dois mettre [$i]
              $tmp_file = $_FILES['fichier']['tmp_name'][$i];
              $nom_file=$_FILES['fichier']['name'][$i]; 

              Et ceux a toute les variables $_FILES sauf a celle du for
              1. j'ai tenu compte de ton dernier post et voici mon code.... mais rien ne s'affiche.....je pense que c'est faux ce que j'ai fais....

                code :

                for ($i = 0; $i < count($_FILES['userfile']['name']); $i++)
                {
                if( isset($_POST['posted']) ) // si formulaire soumis
                {
                $content_dir = 'upload/'; // dossier où sera déplacé le fichier
                $tmp_file = $_FILES['fichier']['tmp_name'];
                $nom_file=$_FILES['fichier']['name'];
                if( !is_uploaded_file($tmp_file) )
                {
                exit("Le fichier est introuvable");
                }

                // on vérifie maintenant l'extension
                $type_file = $_FILES['fichier']['type'];

                if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'png') )
                {
                exit("Le fichier n'est pas une image");
                }

                // on copie le fichier dans le dossier de destination
                $name_file = $_FILES['fichier']['name'];
                if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $name_file) )
                {
                exit("Nom de fichier non valide");
                }
                if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
                {
                exit("Impossible de copier le fichier dans $content_dir");
                }
                echo "Le fichier a bien été uploadé";
                }
                }

                merci
                chris
                1. Euh non désolé j'ai deconné, c'est pas sa niveau PHP désolé
                  <?php
                  for ($i = 0; $i < count($_FILES['cequetuasvoulus']['name']); $i++) //sans les []
                  {
                      //Ici c'est le systeme classique, sauf que tu rajoutes [$i]
                      //Nom du fichier: $_FILES['cequetuasvoulus']['name'][$i];
                      ...
                  }
                  ?>
                  1. Rien autour du foreach qui sert de boucle ouai.
                    Ensuite tu met tes tests, puis la fonction move_uploaded_file() (De tete c'est sa) avec $file['tmp'] (De tete aussi)
                    1. donc si je comprend bien le foreach sert de boucle pour tout les fichiers a uploader? et c'est dans le foreach que je dois faire les test (si je veux en mettre!!)? il n'y a rien en dehors du foreach a ajouter?
                      désolé.... j'essai juste de comprendre comment ça marche... parce que pour moi c'est encore assez flou .... j'ai trouvé des exemples pour un seul upload mais dès que je passe à 2 uploads en même temps je suis perdu et je n'y comprend plus rien .... je ne sais comment adapter mon code.....

                      merci pour la réponse !!!
                      chris
                      1. Coté html, tu fais plusieurs input file, avec comme name="cequetuveux[]"
                        Niveau php,
                        <?php
                        foreach($_FILES['cequetasvoulus'] as $file) //Ne pas mettre les []
                        {
                            //Ici c'est le systeme classique, sauf que au lieu d'utilisé la variable $_FILES, tu utilises $file
                            //Nom du fichier: $file['name'];
                            ...
                        }
                        ?>