Page 1 sur 1

garder le $_files

Posté : 04 mars 2008, 09:10
par karenma
bonjour
j'ai un formulaire avec des champs texte et un champs fichier pour télécharger une photo

Code : Tout sélectionner

<input type="file" name="foto" id="foto" />
quand tous les champs textes ne sont pas remplis le formulaire réapparait et les cases déjà remplis affichent les valeurs déjà tapées


Mais je n'arrive pas à faire en sorte que si la photo a déjà été cherchée avec parcourir et que si le formulaire réppararait on n'ai pas besoin de reparcourir pour la photo

Comment faire merci d'avance pour votre aide

Posté : 04 mars 2008, 09:29
par d0m
C'est impossible de pré-remplir un champ de type file, question de sécurité.
Il faut les remplir à la main à chaque fois.

Ce que tu peux faire pour éviter ça, c'est une vérification en plus en javascript lorsque le formulaire est validé.
Si tous les champs ne sont pas remplis, un message javascript signale les champs et le formulaire n'est pas soumis, la page n'est donc pas rechargé et les chemins pour la photo restent.

Posté : 04 mars 2008, 23:50
par iclo
Salut,

Ou bien, télécharger les fichiers lors de la première validation, en affichant par exemple la liste des fichiers déja uploadés à la place du ou des champs de saisie.

photo

Posté : 08 mars 2008, 10:54
par karenma
Bonjour

En fait ma foto ne se télécharge pas si le formulaire n'est pas rempli en entier car le nom de ma photo s'appelle id.gif

mais comment dire attention il faut recharger la photo et pas revalider le formulaire sans se rendre compte que l'on n'a pas retélécharger la photo dans le cas où un champs texte est vide



et j'aimerai savoir aussi comment dire que si j'ai télécharger la photo(car pas obligatoire) il y a le chiffre 1 qui s'incrit dans la base dans le champs (existephoto)
j'ai essayé plusieurs conditions comme
if( !empty($_files['foto']))
{INSERT INTO essai(existephoto) VALUES ("1");}

mais cela ne fonctionne comment faire
merci d'avance pour vos réponses

Re: photo

Posté : 10 mars 2008, 09:27
par d0m
mais comment dire attention il faut recharger la photo et pas revalider le formulaire sans se rendre compte que l'on n'a pas retélécharger la photo dans le cas où un champs texte est vide
Tu peux soit tout en PHP (un peu compliqué) une fois que le formulaire a été une première fois validé, garder l'image en session par exemple en lui donnant un nom temporaire tant que tu n'as pas le bon.
Tu affiches alors au lieu du champ input de type file, un champ texte qui donne le chemin de l'image avec un bouton modifier.
Ce bouton une fois cliqué recharge la page en remettant le champ input file.

Mais une petite vérification des champs par du javascript me semble bien plus simple et efficace :
Lorsque le formulaire est validé (onSubmit) tu vérifies tous les champs.
Si un champ nécessaire manque tu affiches un message d'alerte.
Le formulaire n'est pas validé et donc le chemin de l'image reste donc dans le champ.
et j'aimerai savoir aussi comment dire que si j'ai télécharger la photo(car pas obligatoire) il y a le chiffre 1 qui s'inscrit dans la base dans le champs (existephoto)
Il y a un champ dans la variable de fichier: $_files['foto']['error']

Il contient le code d'erreur du téléchargement du fichier.
Tu fais un test avant d'utiliser move_uploaded_file sur ce code, si il correspond au code de Aucun fichier n'a été téléchargé alors c'est qu'il n'y avait pas de fichier entré dans le champ.

Re: garder le $_files

Posté : 05 mai 2012, 15:27
par juloo6578
Bonjour,

Je cherche également un moyen de garder le contenu d'un input type="file" après un reload de la page.

En réalité, le fichier n'est pas téléchargé, seulement sélectionné !

Y a t'il une solution en javascript ?

Re: garder le $_files

Posté : 05 mai 2012, 17:55
par moogli
Pas que je sache et ceci pour la même raison que citée plus haut, sinon c'est la merde assurée.

@+