Utiliser 2 input de type ' file ' dans un formulaire aide SVP

Résolu/Fermé
kribac
Messages postés
105
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
28 avril 2016
- 28 juil. 2013 à 11:27
 o'ganch - 1 août 2013 à 09:14
Bonjour,

j'ai 2 parcourir sur mon formulaire , donc deux input de type file , voila mon code HTML et jusque la tout va bien :

<label>Image (JPEG):</label>
<input type="hidden" name="MAX_FILE_SIZE" value="2097152">     
<input type="file" name="img">
							
							
<label>Brochure (PDF):</label>
<input type="hidden" name="MAX_FILE_SIZE" value="2097152">  
<input type="file" name="pdf">
							
<input type="submit" value="ajouter" />


Dans le traitement du formulaire qui est en PHP il envoi le fichier qui est dans IMG et non pas PDF et ça car la premier instruction est IMG si je permute il m'envoi le PDF seulement , donc ça marche mais il exécute seulement la 1er instruction comment je peux envoyer les 2 fichier , donc récupérer les fichiers des deux input et les envoyé voila mon code php

$model=$_POST['model'];

$_FILES;
$chemin_destination =  'C:/wamp/www/monsite/images/';
move_uploaded_file($_FILES['img']['tmp_name'], $chemin_destination.$model.'.jpg');
move_uploaded_file($_FILES['pdf']['tmp_name'], $chemin_destination.$model.'.pdf');

3 réponses

a priori tu fais confiance dans ton utilisateur, lorsqu'il envoi des fichiers (aucune vérification des fichiers envoyés...
De plus, tes if () { }else{ } sont mal construits voire faux ...


dans ton formulaire tu peux enlever
<input type="hidden" name="MAX_FILE_SIZE" value="2097152">
ce sont les mêmes. 



dans trait.php tu dois réécrire tes if
tu peux retirer $_FILES tout seul, il sert à rien.

//testes si l'utilisateur a bien envoyé des fichiers...
//testes si l'extension correspond bien a du jpg ou pdf
//commente tes header afin de vérifier que tout tes tests se sont bien passés.
//header ("location: ...);

echo "<pre>";
print_r($_POST);
print_r($_FILES);
echo "</pre>";
  

if( (!empty($_FILES["img"]) && ($_FILES['img']['error'] == 0)) 
 &&  ( !empty($_FILES["pdf"])  && ($_FILES['pdf']['error'] == 0) )  ) {

//on continue les vérifs

}else{

//pas de fichiers
//on retourne au formulaire

}//fin if test si utilisateur a envoyé fichier




//tu fais un test en base pour vérifier l'existence du modèle, tu peux très bien le faire au niveau du fichier, puisque tu le renommes avec le nom du modèle.
if (!file_exists($chemindestination_modeleimage) || !file_exists($chemindestination_modelepdf) ) {
//on continue les vérifs

}else{

//le modèle existe déjà
}



grosso modo ça donnerait quelque chose comme
if ( utilisateur_a_bien_envoyé_un fichier ){

if (l_extension_du_fichier_correspond_a_jpg_et du_pdf et_que_la_taille_ne_depasse_pas_mon_max_files_size){
     
       if (le_modele_existe_dejà){

          if (les_fichiers_sont_bien_envoyes){
                 
              //donc on peut faire la requete d'insertion

           }else{

             //pb upload
           }
       }else{
            
           //pb le modele existe deja

       }
     
   }else{

    //ce n'est pas un jpg ou du pdf ou alors la taille des fichiers dépasse la taille autorisé

   }


}else{
//on pas recu les deux fichiers (img et pdf)

}


n'hésites pas à poster, si tu bloques ...


Si tu veux envoyer tout le bousin sans vérif'
$connect=mysql_connect('localhost','root','');
$connectbdd=mysql_select_db('arcgroupe',$connect);
if($connectbdd){
 $sql="Select * from hit_minipelle where model='".$model."'";
   $resultat=mysql_query($sql);
   $test=mysql_num_rows($resultat);
   if($test != 0)   {
    //header("location:ajout.php?msg=".$msg='exist');
   }else{
     $chemin_destination =  'dirname(__FILE__).'/images/';
move_uploaded_file($_FILES['img']['tmp_name'],$chemin_destination.$model.'.jpg');
move_uploaded_file($_FILES['pdf']['tmp_name'], $chemin_destination.$model.'.pdf');

  $sql="INSERT INTO arcgroupe.hit_minipelle  VALUES ('".$model."','".$capacite."','".$poid."','".$puissance."','".$model.".jpg','".$model.".pdf')";
     mysql_query($sql);
    
             //header("location:ajout.php?msgpos=".$msgpos='work');
    
       }//fin if $test

}else{
//erreur

}//fin $connnect bdd



2
kribac
Messages postés
105
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
28 avril 2016
10
31 juil. 2013 à 12:42
merci beaucoup o'Ganch , ça marche , juste une petite question , quant j'ai héberger le site par exemple la taille du fichier ne doit pas dépassé 10 Mo , il charge le fichier complètement j'attend un bon moment après il me dis que ton fichier est gros , le teste marche mais pour quoi il faut charger le fichier ?
0
c'est un réglage à faire du php.ini côté serveur concernant les upload.
0
On peut voir le traitement (le code complet) que tu fais sur tes upload ?
0
kribac
Messages postés
105
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
28 avril 2016
10
Modifié par kribac le 28/07/2013 à 12:32
VOILA mon formulaire HTML
<form class="register active" method="post" action="trait.php" enctype="multipart/form-data">      
<div >      
<div>
<label>Model:</label>
<input type="text" name="model" id="model" />
        
</div>
 <div>
<label>Capacite:</label>
<input type="text" name="capacite" id="capacite" />
        
</div>
<div>
<label>Poid:</label>
<input type="text" name="poid" id="poid" />
        
</div>
<div>
<label>Puissance:</label>
<input type="text" name="puissance" id="puissance"/>
        
</div>
<div>
<label>Image (JPEG):</label>
<input type="hidden" name="MAX_FILE_SIZE" value="2097152">     
<input type="file" name="img">
</div>
<div>
<label>Brochure (PDF):</label>
<input type="hidden" name="MAX_FILE_SIZE" value="2097152">  
<input type="file" name="pdf">
</div>
<div>
<input type="submit" value="ajouter" />
</div>
</div>
     
     
     </form>



et VOILA le trait.php



<?php
$model=$_POST['model'];
$capacite=$_POST['capacite'];
$poid=$_POST['poid'];
$puissance=$_POST['puissance'];


$test=0;
$connect=mysql_connect('localhost','root','');
$connectbdd=mysql_select_db('arcgroupe',$connect);
if($connectbdd)
{
 $sql="Select * from hit_minipelle where model='".$model."'";
   $resultat=mysql_query($sql);
   $test=mysql_num_rows($resultat);
    { if($test != 0)
     {
    header("location:ajout.php?msg=".$msg='exist');
  }

      else
        {
  
$_FILES;
$chemin_destination =  'C:/wamp/www/monsite/images/';

move_uploaded_file($_FILES['img']['tmp_name'], $chemin_destination.$model.'.jpg');
move_uploaded_file($_FILES['pdf']['tmp_name'], $chemin_destination.$model.'.pdf');

             $sql="INSERT INTO arcgroupe.hit_minipelle  VALUES ('".$model."','".$capacite."','".$poid."','".$puissance."','".$model.".jpg','".$model.".pdf')";
     mysql_query($sql);
    
             header("location:ajout.php?msgpos=".$msgpos='work');
    
}       }
}
else
{
echo "Erreur !!!";
}
?>

0