Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1519 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  upload dans une boucle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

upload dans une boucle

n°2089146
snoofy
Posté le 13-07-2011 à 09:27:15  profilanswer
 

Bonjour,  
Voivi mon code.  
function AffichPDF ()  
{  
$txt="";  
$txt.="ca marche";  
 $sql = "SELECT * FROM 'P_Produit' WHERE Fich_PDF IS NULL";  
 $resultat = mysql_query($sql) or die('<br>Erreur SQL !<br>' . $sql . '<br>' . mysql_error());  
   
 $txt.='<table border="1" cellspacing="2" cellpadding="2" style="border-collapse: collapse">';  
 $i=0;  
  $txt.= '<th>Id_Produit</th>  
   <th>Reference</th>  
   <th>Nom_Synonyme</th>  
   <th>Numero CAS</th>  
   <th>Fich_PDF</th>';  
 while($ligne = mysql_fetch_array($resultat))  
 {  
  $txt.= '<tr><td>'  
  .($id2[$i]=$ligne['Id_Produit']).'</td><td>'  
  .$ligne['Ref_Fournisseur'].'</td><td>'  
  .$ligne['Nom_Produit_Synonyme '].'</td><td>'  
  .$ligne['NumCAS'].'</td><td>'  
  .HalloViewModif::upload($id2[$i]).'</td></tr>';  
  $i++;  
 }  
     
  $txt.='</table>';  
 
//$id2 = $ligne['Id_Produit'];  
$txt.=$id2[$i];  
     
$txt.='<form method="POST" action="" name="listeProduit">';  
$txt.='<INPUT type="submit" name="terminer" value="terminer">';  
$txt.='</form>';  
     
     
return $txt;  
}  
 
 
Ce programme affiche par requête tout les produits de ma BDD qui n'ont pas de fiche PDF, cette affichage ce fait dans un tableau avec en dernière case la possibilité d'uploader une fiche pdf rennommé avec l'Id correspondant au produit de la ligne.  
Mon problème, l'upload ce fait correctement seulement sur la premiere ligne de mon tableau et ce même si je choisi d'uploader sur les autres lignes.  
Même si certains paramêtres de HalloViewModif::upload() doivent etre changer je suis sure du fonctionnement de cette fonction.  
Je pense que le programme est à repenser différement...  
Si vous avez une idée, merci d'avance.

mood
Publicité
Posté le 13-07-2011 à 09:27:15  profilanswer
 

n°2089153
rufo
Pas me confondre avec Lycos!
Posté le 13-07-2011 à 10:03:02  profilanswer
 

Normal, ton formulaire semble ne contenir qu'un champ input pour l'upload. Cela dit, le bout de code que tu postes me semble incomplet pour résoudre ton pb... :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2089162
snoofy
Posté le 13-07-2011 à 10:19:18  profilanswer
 

Oui, Pour le formuliare celui que tu cherche est dans la fonction HalloViewModif::upload(), si tu veut je peut te le mettre. Et je sais aussi que le code est loin d'être complet, en faite je sais pas comment m'y prendre pour faire ce que je veut...

n°2089183
rufo
Pas me confondre avec Lycos!
Posté le 13-07-2011 à 11:01:52  profilanswer
 

Ben faut 1 seul formulaire pour tout le tableau qui contient autant de input type file pour l'upload, avec un name et un id du style "uploadID" ou ID représente l'ID de l'enregistrement, ce qui te permettra durant le traitement d'associer le fichier uploadé à l'ID de l'enregistrement en parsant le name de l'input en court de traitement (dans ta boucle, faudra récupérer l'ensemble des names d'input qui commencent par "upload".
 
Bien entendu, tous les inputs vides seront laissés de côté.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2089199
snoofy
Posté le 13-07-2011 à 11:45:44  profilanswer
 

function Upload($id2)
{
//$txt.=$id2;
$txt.="ca marche pas";
$txt.= '<form method="POST" action="" enctype="multipart/form-data">
   <!-- On limite le fichier à 100Ko -->
   <INPUT type="hidden" name="MAX_FILE_SIZE" value="100000">
   <INPUT type="file" name="fichePDF"><br>
 
   <INPUT type="submit" name="upload" value="Envoyer les fichiers">
  </form>';
$txt.=$id2;
 
$blnFlagImage = FALSE;
 
 $repertoire = "../www/fichePDF/";
 
 
  if (is_uploaded_file($_FILES['fichePDF']['tmp_name']))  
  {
    $fichier_temp = $_FILES['fichePDF']['tmp_name'];
 
 /*$nom_fichier = strtr($nom_fichier,  
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',  
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    $nom_fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $nom_fichier);*/
     
    //$nom_rep = date("Y" ) .  date("m" ) . date("d" ) . date("G" ) . date("i" ) . date("s" );
    $nom_fichier =  $_FILES['fichePDF']['name'];
 $txt.=$id2;
    //création d'un répertoire.
    //mkdir ( $repertoire, 0777);
 
}
 /*$txt.= "<h3>Le nom d'origine du fichier est '"  
              . $nom_fichier . "'.</h3>";
    $txt.= "<h3>Le type du fichier est '"  
              . $_FILES['fichePDF']['type'] . "'.</h3>";
    $txt.= "<h3>La taille du fichier est de '"  
              . $_FILES['fichePDF']['size'] . " octets'.</h3>";
    */
 $txt.= $repertoire.$id2 ."<br>" ;
 $txt.= $fichier_temp ."<br>" ;
 
 if( move_uploaded_file($fichier_temp, $repertoire.$id2.".pdf" ) )
  {
       $txt.= "Le fichier a bien été uploadé";
  }
 
    else
   
  $txt.="Impossible de copier le fichier dans $repertoire";
 
return $txt;
 
 
 
 
}  
 
Ceci est le code de ma fonction upload appeler dans AffichPDF  
Cette fonction marche correctement, mais c'est son utilisation dans AffichPDF que je n'arrive pas à réaliser correctement...
Je comprend ce que tu veut me dire, et c'est ce que j ai essayé de faire, mais je suis débutant en php mysql et même si je sais ce que je dois faire, je sais pas comment m'y prendre, j'ai essayé plusieurs façons différentes, mais maintenant mon code ne ressemble plus à rien :pt1cable:  
 
Auras tu un exemple ou quelque chose qui me mettrait plus sur la bonne voie?
Merci d'avance pour tes reponses.
 

n°2089403
rufo
Pas me confondre avec Lycos!
Posté le 14-07-2011 à 12:12:23  profilanswer
 

Bah déjà, c'est pas logique d'avoir dans la même fonction, l'affichage du formulaire et le traitement de celui-ci puisque ce sont 2 actions (affichage et traitement de l'upload) qui se font à des moment différents...
 
Par ailleurs, ton form n'a pas d'url dans l'attribut action, c'est pas normal.
 
Enfin, je te disais que si tu veux faire de l'upload de plusieurs ficheirs à la fois, faut un seul form dans ta page html (donc 1 seul bouton submit) qui va contenir plusieurs input de type file dans le name sera un truc du genre "uploadID" où ID représente l'ID de l'enregistrement dans le tableau auquel le fichier devra être associé en base.
 
A mon avis, avant de faire du php, tu devrais mieux te former au html car je pense qu'il te manque des bases...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2092134
snoofy
Posté le 29-07-2011 à 15:18:38  profilanswer
 

Bonjour,  
j'ai été lancer sur un autre projet, donc désolé de repondre que maintenant...
J'ai remodifier mon code en suivant tezs instruction
un seul formulaire
un adresse url
 
j'utilise un id pour mon enregistrement
 
maintenant tout ce passe bien, à l'affichage, j'ai ce que je veut... la seul chose qui marche c'est le téléchargement dans le fichier destinataire
Voici mon code :  
   
function AffichPDF ()
{
 $txt="";
 
  $sql = "SELECT * FROM `P_Produit` WHERE Fich_PDF IS NULL"; //requête SQL
  $resultat = mysql_query($sql) or die('<br>Erreur SQL !<br>' . $sql . '<br>' . mysql_error()); //on traite les résultat de la requête
  $var = "option=".$_REQUEST['option']."&view=".$_REQUEST['view']."&Itemid=".$_REQUEST['Itemid'];
  //déclaration du formulaire
  $txt.='<form method="POST" action="?'.$var.'" name="listeProduit" enctype="multipart/form-data">
   
   <!-- On limite le fichier à 100Ko -->
   <INPUT type="hidden" name="MAX_FILE_SIZE" value="100000">';
   
   
  //déclaration du tableau qui récup les résultats par la boucle while  
  $txt.='<table border="1" cellspacing="2" cellpadding="2" style="border-collapse: collapse">';
   
    $txt.= '<th>Id_Produit</th>
     <th>Reference</th>
     <th>Nom_Synonyme</th>
     <th>Numero CAS</th>
     <th>Fich_PDF</th>';
    while($ligne = mysql_fetch_array($resultat))
     {
     $txt.= '<tr><td>'
    .($id2=$ligne['Id_Produit']).'</td><td>'
    .$ligne['Ref_Fournisseur'].'</td><td>'
    .$ligne['Nom_Produit_Synonyme '].'</td><td>'
    .$ligne['NumCAS'].'</td><td>';
     
    $txt.='<INPUT type="file" name="fichePDF"><br>';
    $repertoire = "../www/fichePDF/";
     if (is_uploaded_file($_FILES['fichePDF']['tmp_name']))  
                                                       {
 
                                                                  $fichier_temp = $_FILES['fichePDF']['tmp_name'];
                                                                  $nom_fichier =  $_FILES['fichePDF']['name'];
                                                      $txt.=$fichier_temp;
                                                      $txt.=$id2;
                                                        }
   
                                     $txt.= $repertoire.$id2 ."<br>" ;
                                     $txt.= $fichier_temp ."<br>" ;
 
                                           if( move_uploaded_file($fichier_temp, $repertoire.$id2.".pdf" ) )
                                {
                                                                   $txt.= "Le fichier a bien été uploadé";
                                         }
 
                                                        else
   
                                                    $txt.="Impossible de copier le fichier dans $repertoire$id2";
                                                     
                                                   $txt.='</td></tr>';
     
     }
     
    $txt.='</table>';
 
 
 
     
   //bouton d'envoi des valeurs et fermeture du formulaire  
   $txt.='<INPUT type="submit" name="upload" value="Envoyer les fichiers">';
   $txt.='</form>';
   
   
    return $txt;

n°2092137
rufo
Pas me confondre avec Lycos!
Posté le 29-07-2011 à 15:32:43  profilanswer
 

et la question est?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  upload dans une boucle

 

Sujets relatifs
[C#] Traitement de checkbox ou textbox en boucleBoucle à faire dans macro VBA (Excel)
Upload de fichiers en PHP : corruption des donnéesValidation formulaire d'upload de fichier sans changer de page
CUDA : Boucle for qui prend de plus en plus de temps[PHP] Utiliser 2 requêtes SQL dans 1 boucle ?
Upload un fichiers par FTPExcel : boucle copie de plages sous condition
nouvelle extension pour script upload fileBoucle vba qui ouvre des fichiers avec noms variables
Plus de sujets relatifs à : upload dans une boucle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR