Indentation Array

Indentation Array - PHP - Programmation

Marsh Posté le 08-05-2009 à 10:31:32    

Bonjour a tous,
 
voici mon p'ti problème. Je bloque sur un array.
 
Soit le javascript suivant :

Code :
  1. var Nb=1;
  2. function AjoutChamps(LeParam){
  3.    Nb++;
  4.    LeFile=document.getElementById("Champ"+(Nb-1)).cloneNode(true);
  5.    LeFile.name="Champ"+Nb;
  6.    LeFile.id="Champ"+Nb;
  7.    LeFile.Nb=Nb;
  8.    LeRetourChariot=document.createElement("br" );
  9.    document.getElementById("LesChamps" ).appendChild(LeFile);
  10.    document.getElementById("LesChamps" ).appendChild(LeRetourChariot);
  11.    document.getElementById("Champ"+(Nb-1)).onchange="";
  12.    if(Nb==10){
  13.       document.getElementById("Champ"+(Nb)).onchange="";
  14.    }
  15. }


 
Mon formulaire (non non ne partez pas... je vais bien parler php ...) :

Code :
  1. <div id="LesChamps">
  2. <input NAME="Champ1" TYPE="file" id="Champ1" onChange="AjoutChamps(this.Nb);" size="60">
  3. </div>


 
 
Et en fin ma boucle php :

Code :
  1. $t= time();
  2.       $j=1;
  3.       while(isset($_FILES["Champ".$j])){
  4.       move_uploaded_file($_FILES["Champ".$j]['tmp_name'],$repertoire.$t.'_'.$j.".jpg" );
  5.       $ListAnnexe[]= $t.'_'.$j.".jpg";
  6.       $j++;
  7.      
  8.        }


 
Mon problème est que ma boucle me renvois toujours un élément en plus que se qui existe réellement dans mon formulaire. Quelqu'un pourait-il m'éclairer ?
Je précise que je n'y connait queu dalle en javascript (j'ai donc pompé le code sur un tuto) et débutant amateur depuis 5 ans en php   :heink:  
 
Merci a vous et bonne journées ...

Reply

Marsh Posté le 08-05-2009 à 10:31:32   

Reply

Marsh Posté le 08-05-2009 à 10:42:35    

Et bien je ne vais pas vraiment répondre à ta question mais...
Tu devrais plutôt passer par un tableau de fichiers !
C'est à dire :

Code :
  1. <p><input type="file" name="files[]" id="fichier1" /></p>
  2. <p><input type="file" name="files[]" id="fichier1" /></p>
  3. <!-- etc... ->


 
Et pour le PHP :

Code :
  1. if(is_array($_FILES['files'])) {
  2.    foreach($files as $file) {
  3.        move_uploaded_file($file['tmp_name'], $destination);
  4.    }
  5. }

Reply

Marsh Posté le 08-05-2009 à 10:49:51    

Merci a toi pour cette réponse rapide ...
 
Mais si je fais ca, je perd ma fonction javascript qui me permet d'ajouter des champs automatiquement ?
 
Jean

Reply

Marsh Posté le 08-05-2009 à 10:58:41    

Ce sera toujours possible mais tu devras refaire ta fonction.
Seulement crois moi, tu gagneras beaucoup de temps plus tard.
Et puis les tableaux sont faits pour çà après tout.

Reply

Marsh Posté le 08-05-2009 à 11:02:17    


 
 
OK
 
Merci a toi. Je vais suivre ton conseil. Ma fonction javascript n'est pas si importante que ca et je trouverais bien un moment plus tard pour me pencher dessus. En attendant, il  y a d'autres choses importante ...
 
Merci encore et bonnes journée ... :hello:

Reply

Marsh Posté le 11-05-2009 à 11:59:55    


 
Bonjour,
désolé de revenir a la charge ... mais j'y ai passé toutes la matinée et je n'arrive pas a faire fonctionner mon code  :pt1cable:  

Code :
  1. $t= time();
  2.         $i=0;
  3.         if(is_array($_FILES['annexes']['name']))
  4.           {
  5.             foreach($annexes as $annexe)
  6.               {
  7.               move_uploaded_file($annexe['tmp_name'][$i],$repertoire.$t.'_'.$i.".jpg" );
  8.               }
  9.             $ListAnnexe[]= $t.'_'.$i.".jpg";
  10.             $i++;
  11.           }


Pourriez-vous m'indiquer mon erreur ?
Merci a vous

Reply

Marsh Posté le 11-05-2009 à 12:47:25    

Code :
  1. <div id="LesChamps">
  2. <input NAME="Champ1" TYPE="file" id="Champ1" onChange="AjoutChamps(this.Nb);" size="60">
  3. </div>


Pas top.
Si je comprends bien, quand le contenu de Champ1 change, tu rajoutes un champ.
Problèmes :
- Tu vas toujours te retrouver avec n+1 champs, le dernier champ étant vide...
-  Je donne un fichier dans champ1. Tu crées champ2. Je me rend compte que je me suis planté de fichier, donc je retourne modifier champ1. => Tu crées champ3.

Code :
  1. $t= time();
  2.         $i=0;
  3.         if(is_array($_FILES['annexes']['name']))
  4.           {
  5.             foreach($annexes as $annexe)
  6.               {
  7.               move_uploaded_file($annexe['tmp_name'][$i],$repertoire.$t.'_'.$i.".jpg" );
  8.               }
  9.             $ListAnnexe[]= $t.'_'.$i.".jpg";
  10.             $i++;
  11.           }

Il y a quoi dans $annexes ?  :ange:  

Reply

Marsh Posté le 11-05-2009 à 12:54:02    

Bonjour et merci de votre intervention.
 
Désolé, mais je n'ai pas précisé mon nouveau formulaire qui n'a plus rien a voir avec celui mentionné plus haut dans le post. Voici donc le nouveau :

Code :
  1. <h2>Fügen Sie bitte ein Bild ein :</h2>
  2. <form enctype="multipart/form-data" action="" method="post" name="f1">
  3. <br>Choisir le fichier :
  4. <input name="fichier" type="file">
  5. <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $poids_max; ?>">
  6. <input type="button" value="Aperçu " onclick="voir()">
  7. <p><input type="file" name="annexes[]" id="fichier1" /></p>
  8. <p><input type="file" name="annexes[]" id="fichier2" /></p>
  9. <p><input type="file" name="annexes[]" id="fichier3" /></p>
  10. <p><input type="file" name="annexes[]" id="fichier4" /></p>

Reply

Marsh Posté le 11-05-2009 à 19:01:18    

Et puis c'est pas :
if(is_array($_FILES['annexes']['name']))
mais :
if(is_array($_FILES['annexes']))
;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed