Bonjour,
J'ai adapté le code trouvé ici pour permettre à l'utilisateur d'envoyer plusieurs fichiers à l'application.
Ça fonctionne très bien et le choix du nombre de fichiers à transférer multiplie effectivement le champ <INPUT type="file"> dans le formulaire principal de la page.
J'ai voulu faire la même chose dans la même page pour permettre à l'utilisateur de poster plusieurs informations de même type, en l'occurrence des infos sur des exercices posés lors d'un examen. Le but de la page est en effet d'enregistrer une annale d'examen avec des infos pour chaque exercice de cet examen et accompagner l'examen de 1 à n fichiers.
Malheureusement, lorsque l'utilisateur choisit le nombre de fichiers, le champ d'insertion du fichier se multiplie bien, mais quand il choisit ensuite le nombre d'exercices de l'examen, les champs relatifs aux exercices se multiplient bien mais il n'y a plus qu'une zone d'envoi de fichier.
Voici mon code :
J'avais essayé auparavant en faisant deux formulaires séparés, l'un pour choisir le nombre de fichier et l'autre pour choisir le nombre d'exercices mais c'était pareil.
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 /* Code de téléversement de fichiers de Pierre Pesty * récupéré sur http://dev.ppan.net/transfert-de-fichiers-upload-multiple.php */ $taillemax = 1024000; // taille max d'un fichier (multiple de 1024) $filetype = "/MS Word|MS Excel|OO Text| OO Calc|PDF|RTF/i"; // types de fichiers acceptés, séparés par | $nametype = "/\.doc|\.xls|\.odt|\.ods|\.pdf|\.rtf/i"; // extensions correspondantes $rep = "./annales/"; // répertoire de destination $maxfichier = 10; // nombre maximal de fichiers à téléverser $maxexercice = 10; // nombre maximal d'exercices à enregistrer // fichier courant (URI absolue) : formulaire récursif $PHP_SELF = basename($_SERVER['PHP_SELF']); // 1 fichier par défaut (ou supérieur à $maxfichier) $upload = (isset($_REQUEST['upload']) && $_REQUEST['upload'] <= $maxfichier) ? $_REQUEST['upload'] : 1; // 1 exercice par défaut (ou supérieur à $maxexercice) $nbexr = (isset($_REQUEST['nbexr']) && $_REQUEST['nbexr'] <= $maxexercice) ? $_REQUEST['nbexr'] : 1; ?> <p><strong>Ajouter une annale d'examen</strong></p> <!-- Choix du nombre de fichier(s) à transférer --> <form action="<?php echo $PHP_SELF; ?>" method="post"> Nombre de fichiers à transférer pour cet examen ? <select name="upload" onChange="window.open(this.options[this.selectedIndex].value,'_self')"> <?php for($i = 1; $i <= $maxfichier; $i++) { ?> <option value="<?php echo $PHP_SELF."?upload=".$i; ?>" <?php if($i == $upload) echo " selected=\"selected\" "; ?> > <?php echo $i; ?> </option> <?php } //Fin for($i=1; $i<=$maxfichier; $i++) ?> </select> <!-- Fin choix du nombre de fichier(s) à transférer --> <br /> <!-- Choix du nombre d'exercices à enregistrer --> Nombre d'exercices à enregistrer pour cet examen ? <select name="nbexr" onChange="window.open(this.options[this.selectedIndex].value,'_self')"> <?php for($i = 1; $i <= $maxexercice; $i++) { ?> <option value="<?php echo $PHP_SELF."?nbexr=".$i; ?>" <?php if($i == $nbexr) echo " selected=\"selected\" "; ?> > <?php echo $i; ?> </option> <?php } //Fin for($i=1; $i<=$maxfichier; $i++) ?> </select> </form>
Partager