Bonsoir @ tous,
Ce qui m'amène aujourd'hui, c'est le traitement (en mode MODIFICATION) de plusieurs champs <input type="file" value="fichier"> en un seul envoi du même formulaire : mon pb se situe donc au niveau de la BOUCLE à effectuer pour tester chacun de ces fichiers les uns après les autres.
A l'origine mon code ressemble à ça : il s'agit de valider/uploader/màj BDD concernant 3 photos pour une même galerie :
Maintenant, il faut :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12<form method="post" action="traitement.php" name="formulaire" enctype="multipart/form-data"> <label for="photo1">Fichier 1 :</label> <input type="file" name="photo1" id="photo1" /> <label for="photo2">Fichier 2 :</label> <input type="file" name="photo2" id="photo2" /> <label for="photo3">Fichier 3 :</label> <input type="file" name="photo3" id="photo3" /> <input type="hidden" name="action" id="action" value="confirm_modif" /> <input type="hidden" name="id_galerie" id="id_galerie" value="<?=$ID;?>" /> <input type="submit" name="submit" value="Enregistrer" /> </form>
- vérifier quel(s) champ(s) "file" a (ont) été renseigné(s) : donc si $_FILES['photo1']['error']!=4 puis si $_FILES['photo2']['error']!=4 puis si $_FILES['photo3']['error']!=4) -> si l'utilisateur n'a pas renseigné de fichier dans le formulaire, c'est qu'il veut conserver le fichier déjà existant, sinon, ça eut dire il veut remplacer le fichier existant par un nouveau (je suis en mode MODIFICATION, souvenez-vous !)
- pour chacun de ces 3 fichiers et si ($_FILES['photo...']['error']!=4) : vérifier la taille, le format, le type MIME (et autres tests dont je ne vous donne pas le détail parce que je maîtrise !) etc... et donner une alerte si erreur... Bon ça, je sais faire...
- et si un ou plusieurs de ces 3 fichiers ont été renseignés, uploader ce(s) fichier(s) et mettre à jour la BDD en conséquence (ça aussi je sais faire, ce n'est pas le pb !)
Là où je coince, c'est pour optimiser l'écriture de mon fichier "traitement.php". Bien sûr, je pourrais traiter chacun de ces 3 fichiers séparément et à la suite les uns des autres, mais ça va alourdir la procédure vu que, pour chacun des 3 champs "file" de mon formulaire, je vais me retrouver avec un bon demi-milliers de lignes de code et 3 requêtes de MàJ de ma base de données à la suite...pas glop !
Alors si une boucle, traitant tour à tour les 3 champs "file", pouvait être implémentée, ça simplifierait drôlement mon code !!! Mais là, je bloque...
Je rêve d'ajouter une boucle du genre :
for ($i=1; $i<4;$i++) {je traite mon fichier $_FILES[photo.$i]; blablabla...} mais ça marche pas !!!
Voilou...
Merci d'avance @+





Répondre avec citation







Partager