upload d'un nombre variable de fichiers [php] - Programmation
Marsh Posté le 06-10-2001 à 00:20:50
utilise $$ :
for ($i=0; $i<$numFiles; $i++)
{
$fileName = 'userfile' . $i;
$ulFileName = 'userfile' . $i . '_name';
// tu accèdes alors à la variable par $$fileName
// donc un truc comme ...
copy($$fileName, $$ulFileName);
}
Marsh Posté le 06-10-2001 à 15:05:29
Je viens de faire exactement la même chose...
Si tu veux mes codes...
Marsh Posté le 06-10-2001 à 15:14:38
pkoi pas pke la le miens y merde
$destination="/home/upload";
$i=1;
while($i<=$nbpic) {
$usfl="userfile".$i;
$nmusfl="userfile".$i."_name";
$szusfl="userfile".$i."_size";
if ($$usfl=="none" ) {
echo "<h2><font face=arial>Vous n'avez pas sélectionné de fichier.</font></h2>";
}
if ($$usfl!="none" && $$szusfl!=0) {
$$usfl=stripslashes($$usfl);
$final="$destination/$idart";
$final.="_$idpage";
$final.="_$i.jpg";
echo "final : $final";
if (!copy($$usfl, "$final" )) {
echo "<br>Probleme de transfert !<br>";
exit();
}else{
echo "<a name=\"deb\"></a>\n<CENTER>\n<H3><b>Les fichiers ont correctement étais u/l</b></H3>\n</CENTER>";
}
}
}
il u/l bien le 1er fichier (une image pour le moment, je ferais le script d'identifacation des fichiers plus tard) mais après il foire (il fait même planté tous l'ordi avec ie )
mais j'suis pas contre que tu me passe ton code
Marsh Posté le 06-10-2001 à 16:05:13
Dans une première page l'utilisateur est invité à choisir un nom générique de fichiers ($nom) et le nombre de fichiers du groupe ($nbr).
Ensuite ces informations sont envoyées à une deuxième page qui génère dynamiquement le formulaire nécéssaire et dont voici le code:
Code :
|
Une fois qu'il a sélectionné ses fichiers, le tout est envoyé à cette page:
Code :
|
A noter que ce script n'est fait que pour des .jpeg
[edtdd]--Message édité par Freekill--[/edtdd]
Marsh Posté le 06-10-2001 à 16:13:51
Ah oui, j'oubliais la théorie:
Lorsque l'on veut uploader plusieurs fichiers avec un seul formulaire, le principe est de travailler avec le même nom (ex. "userfile" ) pour tous les inputs file.
Ensuite l'$userfile se comportera comme une array, et on l'interrogera comme telle (premier fichier = $userfile[0], 2ème fichier = $userfile[1], etc.)
Marsh Posté le 06-10-2001 à 16:52:54
Mais qu'est ce que je suis kon
j'ai complétement oublié d'incrémenté ma valeur $i
revoila mon script corrigé (plus qql truc modifié ) :
$destination="/home/www/upload";
$i=1;
while($i<=$nbpic) {
$usfl="userfile".$i;
$nmusfl="userfile".$i."_name";
$szusfl="userfile".$i."_size";
if ($$usfl=="none" ) {
echo "<h2><font face=arial>Vous n'avez pas sélectionné de fichier.</font></h2>";
}
if ($$usfl!="none" && $$szusfl!=0) {
$$usfl=stripslashes($$usfl);
$final="$destination/$idart";
$final.="_$idpage";
$final.="_$i.jpg";
if (!copy($$usfl, "$final" )) {
echo "<br>Probleme de transfert !<br>";
exit();
}
}
$i++;
}
echo "<a name=\"deb\"></a>\n<CENTER>\n<H3><b>Les fichiers ont correctement étais u/l</b></H3>\n</CENTER>";
j'ai essayé avec les arrays mais le script merdouillé alors j'ai pas cherché plus loin me contente de ce que j'ai fait
merçi quand même
[edtdd]--Message édité par Deadog--[/edtdd]
Marsh Posté le 06-10-2001 à 17:01:01
Freekill a écrit a écrit : Ensuite l'$userfile se comportera comme une array, et on l'interrogera comme telle (premier fichier = $userfile[0], 2ème fichier = $userfile[1], etc.) |
haaa c'est trop cool ça. ça m'a inspiré pour tenter autre chose : je ne savais pas comment accéder, en javascript, à deux divs ayant le même nom (bon ok c'est pas très utile, c'est juste pour la forme).
he bien pareil, par un array :
<div id='myDiv'></div>
<div id='myDiv'></div>
<script>
myDiv[0].innerHTML = 'div1';
myDiv[1].innerHTML = 'div2';
Marsh Posté le 06-10-2001 à 17:04:40
Deadog a écrit a écrit : Mais qu'est ce que je suis kon j'ai complétement oublié d'incrémenté ma valeur $i |
c'est quand même mieux d'utiliser un for dans ce cas :
for ($i=1; $i<=$nbpic; $i++)
{
// ton code ...
}
Marsh Posté le 06-10-2001 à 17:11:14
moi aussi je dois me forcer pour utiliser les for.
je sais pas pourquoi mais instinctivement je mets des while.
Marsh Posté le 06-10-2001 à 17:12:54
pê pke on sait incontionnelement qu'un while va plus vite qu'un for
Marsh Posté le 06-10-2001 à 17:16:45
Deadog a écrit a écrit : pê pke on sait incontionnelement qu'un while va plus vite qu'un for |
quand je connais toujours le nombre d'éléments à traiter, j'utilise un for
sinon, un while (genre recherche dans une liste chaînée).
l'abus de while entraîne des bugs comme l'oubli de l'incrémentation de l'index (ça m'arrive aussi après des années de pratique )
[edtdd]--Message édité par youdontcare--[/edtdd]
Marsh Posté le 06-10-2001 à 17:22:34
Deadog a écrit a écrit : pê pke on sait incontionnelement qu'un while va plus vite qu'un for |
Tu es sûr de ça?
Beaucoup plus rapide?
Marsh Posté le 06-10-2001 à 17:26:25
bcp, je sais pas, m'étonnerai même, mais je me souviens avoir lu je sais pas trop où que niveau assembleur un while allez plus vite qu'un for...
youdontcare > tous pareil
Marsh Posté le 06-10-2001 à 00:05:58
voila, je voudrait faire un script qui permet d'uploader un nombre de fichiers variable.
En clair, le gars arrive sur une page, marque dans un input text un certain nombre (au hasard 7), clique sur le bouton et est redirigé vers une page avec 7 formulaire d'upload, et bien sur de pouvoir récupéré ces fichiers avec du php
d'habitude pour mes upload j'utilise ce script :
<INPUT NAME="userfile" TYPE="file" size="20">
<input type="hidden" name="action" value="add">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="10000000">
(pour la parti HTML)
$destination="/home/www/upload";
if ($userfile=="none" ) {
echo "<h2><font face=arial>Vous n'avez pas sélectionné de fichier.</font></h2>";
}
if ($userfile!="none" && $userfile_size!=0) {
$userfile=stripslashes($userfile);
if (!copy($userfile, "$destination/$userfile_name" )) {
echo "<br>Probleme de transfert !<br>";
exit();
}
}
(pour le php)
mon script pour généré un certain nombre de formulaire d'upload :
$i=1;
while($i<=$nbpic) {
?>
<INPUT NAME="userfile" TYPE="file" size="20">
<input type="hidden" name="action" value="add">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="10000000"><BR><BR>
<?php
$i++;
}
Le problème vient du faite de récupéré mes fichiers
je pensais utiliser une boucle avec comme limite le nombre de formulaire mais dans ce cas la faut que je donne comme nom name="userfile<?php echo $i ?>" dans mon INPUT file, mais quand je vais récupéré mes fichiers dans la parti php il me faut les variables userfile1, userfile2, userfile3, userfile4, ... or je me vois mal faire $userfile$i
zavez pas une idée