Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/09/2011, 13h36   #1
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Par défaut Deux listes à action sur la même page

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 :
Code PHP :
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 ?&nbsp;
    <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 ?&nbsp;
    <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>
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.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 13h58   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Trouvé !
J'ai complété les options des listes avec la valeur de l'autre liste :
Code :
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
<?php 
for($i = 1; $i <= $maxfichier; $i++) 
{
?>
        <option value="<?php echo $PHP_SELF."?upload=".$i.'&nbexr='.$nbexr; ?>"
            <?php if($i == $upload) echo " selected=\"selected\" "; ?>
        >
            <?php echo $i; ?>
        </option>
<?php 
} //Fin for($i=1; $i<=$maxfichier; $i++)
?>
 
// ...
 
<?php 
for($i = 1; $i <= $maxexercice; $i++) 
{
?>
        <option value="<?php echo $PHP_SELF."?nbexr=".$i.'&upload='.$upload; ?>"
            <?php if($i == $nbexr) echo " selected=\"selected\" "; ?>
        >
            <?php echo $i; ?>
        </option>
<?php 
} //Fin for($i=1; $i<=$maxfichier; $i++)
?>
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h16.


 
 
 
 
Partenaires

Hébergement Web