xpatval Posté 15 Mars 2007 Posté 15 Mars 2007 Bonjour, La question est dans le titre, je bute sur ce problème. J'ai un tableau avec un nombre d'entrées connu (fichiers en upload), mais les valeurs de ces entrées peuvent être vides. Je souhaite donc retirer celles-ci de mon tableau. Comment cela peut-il s'effectuer, si c'est possible ? for ($i = 0; $i < count($_FILES['my_field']['name']); $i++){ if ($_FILES['my_field']['name'][$i] == "") echo "entrée vide"; ??? } Merci de vos réponse, xpatval
captain_torche Posté 15 Mars 2007 Posté 15 Mars 2007 Tu devrais pouvoir le faire de cette manière : <?phpforeach($_FILES['my_field']['name'] as $key => $value) {if(empty($value))unset($_FILES['my_field']['name'][$key]);}?>
xpatval Posté 15 Mars 2007 Auteur Posté 15 Mars 2007 Oui..mais non Donc, je me suis mal exprimé. Le problème est alors à un niveau supérieur. Je souhaitais vérifier l'existence du nom d'un fichier à uploader, et, si celui-ci est vide, ne pas lancer la procédure d'upload. Ce qui reviendrait à cela: if ((empty($_FILES['my_field']['name'])) unset($_FILES['my_field']); Est-ce d'ailleurs possible ? Merci de ta réponse précédente. xpatval
Anonymus Posté 15 Mars 2007 Posté 15 Mars 2007 C'est ca : if ((empty($_FILES['my_field']['name'])) unset($_FILES['my_field']); voire dans ta première boucle : if ((empty($_FILES['my_field']['name'][$i])) unset($_FILES['my_field']);
xpatval Posté 16 Mars 2007 Auteur Posté 16 Mars 2007 C'est là où je bloque. Car, selon mes tests, ça ne fonctionne pas. dans la partie formulaire, j'autorise 3 upload max (j' ai dégrossi le code: <form action="up_ins.php" method="post" enctype="multipart/form-data"> <input class="forme" type="file" name="my_field[]" /> <input class="forme" type="file" name="my_field[]" /> <input class="forme" type="file" name="my_field[]" /></form> Dans le fichier de récup des données du formulaire, j'effectue un test: <?phpecho "count av = ". count($_FILES['my_field']['name']) ."<br />";foreach($_FILES['my_field']['name'] as $key => $value) { if(empty($value)) unset($_FILES['my_field']['name'][$key]);} echo "count ap = ". count($_FILES['my_field']['name']) ."<br />";?> Dans le test ci-dessus, j'ai bien 3 entrées 'name', même si celles-ci sont vides, avant le UNSET. Et je n'en ai plus qu'une, si 2 entrées 'name' sont vides, plus que 2 si l'une est vide, etc. Maintenant, je teste différemment: <?phpecho "count av = ". count($_FILES['my_field']) ."<br />"; Là, mon compteur est à 5. Autrement dit, dans ces entrées, doivent se retrouver le nom du fichier, sa taille, le path temporaire et le type. M'en manque un. Ah oui, le code erreur. Et comme on ne mélange pas des choux et des carottes, si une entrée 'name' est vide, le UNSET ne marche pas. foreach($_FILES['my_field']['name'] as $key => $value) { if(empty($value)) unset($_FILES['my_field'][$key]); } echo "count ap = ". count($_FILES['my_field']) ."<br />"; Count avant et après gardent la même valeur... Bon, je teste autre chose.... xpatval
lionel.a Posté 20 Mars 2007 Posté 20 Mars 2007 Bonjour, Attention, ce que tu essayes d'effacer n'est pas ce que tu viens de lire. As-tu essayé : foreach($_FILES['my_field']['name'] as $key => $value) { if(empty($value)) unset($_FILES['my_field']['name'][$key]); } --lionel
xpatval Posté 20 Mars 2007 Auteur Posté 20 Mars 2007 Oui, j'ai essayé. Mais le but premier était de retirer une entrée au tableau des fichiers téléchargeables ($_files['my_field']) si le nom du fichier ($_files['my_field']['name']) est à vide. Si j'exécute le UNSET uniquement sur le name, l'entrée première $_files['my_field'] n'en est pas pour autant éliminé. Seule l'indice concernant le nom l'est. xpatval
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant