garder le $_files

Eléphant du PHP | 83 Messages

04 mars 2008, 09:10

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

d0m
Mammouth du PHP | 1141 Messages

04 mars 2008, 09:29

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.

ViPHP
ViPHP | 2144 Messages

04 mars 2008, 23:50

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.

Eléphant du PHP | 83 Messages

08 mars 2008, 10:54

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

d0m
Mammouth du PHP | 1141 Messages

10 mars 2008, 09:27

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.

juloo6578
Invité n'ayant pas de compte PHPfrance

05 mai 2012, 15:27

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 ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 mai 2012, 17:55

Pas que je sache et ceci pour la même raison que citée plus haut, sinon c'est la merde assurée.

@+
Il en faut peu pour être heureux ......