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

  FORUM HardWare.fr
  Programmation
  PHP

  Indentation Array

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Indentation Array

n°1882098
jeanvie
Posté le 08-05-2009 à 10:31:32  profilanswer
 

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 ...

mood
Publicité
Posté le 08-05-2009 à 10:31:32  profilanswer
 

n°1882100
Profil sup​primé
Posté le 08-05-2009 à 10:42:35  answer
 

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. }

n°1882101
jeanvie
Posté le 08-05-2009 à 10:49:51  profilanswer
 

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

n°1882107
Profil sup​primé
Posté le 08-05-2009 à 10:58:41  answer
 

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.

n°1882108
jeanvie
Posté le 08-05-2009 à 11:02:17  profilanswer
 


 
 
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:

n°1882949
jeanvie
Posté le 11-05-2009 à 11:59:55  profilanswer
 


 
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

n°1882972
macgawel
Posté le 11-05-2009 à 12:47:25  profilanswer
 

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:  

n°1882975
jeanvie
Posté le 11-05-2009 à 12:54:02  profilanswer
 

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>

n°1883385
Profil sup​primé
Posté le 11-05-2009 à 19:01:18  answer
 

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


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

  Indentation Array

 

Sujets relatifs
Problème d'affichage double boucle (mysql_fetch_array)suppression dans un array (tableau) [modifié]
remplire une array grace à une BDD mysqlTout calculer avec array_walk_recursive
Recherche d'index dans list ou arrayCreation d'une array recursive
Erreur de type Warning: mysql_fetch_array()[PHP] Problème Array : test de valeurs negatives de suite
Warning: mysql_fetch_array():Suppprimer une ligne dans un Array ou dans un Fichier
Plus de sujets relatifs à : Indentation Array


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