[RESOLU] Sauvegarde d'un formulaire en fichier

Eléphant du PHP | 67 Messages

13 sept. 2012, 00:33

Bonjour à tous ...

Comme ce forum m'a déjà bien dépanné (merci à tous les pro qui prennent le temps de répondre) j'ai encore une petite question:

Je voudrais sauvegarder un formulaire sur le PC client dans un format de style 'snapshot' ... ou autre
J'ai un mis bouton JavaScript qui me permet de l'imprimer : <input type="button" value="Imprimer" onClick="JavaScript:print();" name="button" /> et le résultat sur l'imprimante correspond assez bien à ce qu'il y a sur l'écran.

Ma question:
Y-a-t'il moyen de faire la même chose mais avec un bouton qui proposerait le téléchargement d'un fichier qui contiendrait mon formulaire avec sa mise en forme ? (donc pas uniquement les champs sous format txt)

Merci d'avance

Philippe

Eléphant du PHP | 229 Messages

13 sept. 2012, 06:41

Bonjour,
JEsuis pas un pro, mais peut être :
Créer un fichier (txt, pdf..) et proposer le download.

ViPHP
xTG
ViPHP | 7331 Messages

13 sept. 2012, 09:00

Tu peux faire en sorte d'inclure tous tes styles et code javascript dans ton fichier HTML :
<html>
<head>
<style>
.uneClass {
  color: #000;
}
</style>
<script type="text/javascript">
alert('script js');
</script>
</head>
<body>
Test
</body>
</html>
Ainsi qu'un seul fichier ne sera enregistré et il contiendra tout.

Eléphant du PHP | 67 Messages

13 sept. 2012, 14:57

Tu peux faire en sorte d'inclure tous tes styles et code javascript dans ton fichier HTML :
<html>
<head>
<style>
.uneClass {
  color: #000;
}
</style>
<script type="text/javascript">
alert('script js');
</script>
</head>
<body>
Test
</body>
</html>
Ainsi qu'un seul fichier ne sera enregistré et il contiendra tout.
Merci mais comment je fais pour proposer le download ?

ViPHP
xTG
ViPHP | 7331 Messages

13 sept. 2012, 15:32

Avec header() il doit y avoir moyen d'utiliser une entête pour forcer le téléchargement.
Mais j'avoue que c'est pas ma tasse de thé, d'autant plus qu'il me semble logique que l'interprétation des headers est à la charge du navigateur.
Donc si le navigateur décide d'afficher le fichier (comme les fichiers .txt par exemple) à la place d'ouvrir la box de téléchargement tu n'y peux pas grand chose...

Eléphant du PHP | 67 Messages

13 sept. 2012, 15:41

Merci xTG ...

Effectivement, j'ai testé avec Firefox et il ne fait qu'afficher le contenu ... pas de proposition de téléchargement.
Je crois qu'on pourrait contourner le problème en créant un fichier et ensuite via un autre lien le proposer en téléchargement mais comme je veux faire un truc simple pour le visiteur du site, on laisse tomber ... il peut déjà imprimer, ce sera suffisant.

Merci pour les réponses en tout cas.

Je vais encore un peu laisser le sujet ouvert un jour ou deux ... on ne sait jamais ...

Philippe

ViPHP
xTG
ViPHP | 7331 Messages

13 sept. 2012, 16:42

Une idée qui me vient...
Un fichier html est interprété de par son extension dans un navigateur.
Mais le téléchargement se fait via le type mime.
Donc à tester de lui envoyer un header indiquant un mime octet/stream (ou un truc du genre) pour voir s'il propose le téléchargement.

Eléphant du PHP | 67 Messages

14 sept. 2012, 21:11

Merci ...
J'ai testé mais ça ne marche pas non plus ... mais ce n'est pas grave.
Avec le bouton <Imprimer> il est possible lors de la sélection de l'imprimante de choisir l'option 'imprimer dans un fichier' qui va créer un prn.
Le client saura se débrouiller avec ça.

Merci en tout cas.

Tant que j'y suis, j'ai une autre question à laquelle tu saurais peut-être répondre:
Comment puis-je désactiver la fonction <ENTREE> sur une page formulaire ?
Si on est dans une zone de saisie et qu'on appuie sur <Entrée> au lieu de la tabulation pour passer à la zone suivante, ça active la fonction <input type="submit" value="Envoyer" name="submit" /> !!!!
Si le formulaire n'est pas complet, la page de traitement envoie un formulaire incomplet et ça oblige le client à recommencer le tout ... et c'est assez lourd.

Est-ce que je poste un nouveau topic pour ça ?

Merci
Philippe
Modifié en dernier par philspain le 14 sept. 2012, 21:19, modifié 1 fois.

Eléphant du PHP | 229 Messages

14 sept. 2012, 21:17

En enlevant les balises form peut être.

Eléphant du PHP | 67 Messages

14 sept. 2012, 21:22

En enlevant les balises form peut être.
???? si j'enlève les balises <form name="formfree" method="post" action="_traitementfull.php"> ..... </form> ça ne sera plus un formulaire et je ne saurais pas l'envoyer vers ma page de traitement, non ????

Eléphant du PHP | 229 Messages

14 sept. 2012, 21:25

Y à d autre moyen(ajax). Mais je pense pas que ce soit la solution

Eléphant du PHP | 67 Messages

14 sept. 2012, 21:30

Y à d autre moyen(ajax). Mais je pense pas que ce soit la solution
Je suis déjà pas une pointure en PHP mais alors en JS, je suis en-dessous de nul ...
Tu as une idée pour une solution ? (ou une piste) ...

Merci en tout cas
Philippe

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

14 sept. 2012, 21:40

réponse plus exacte :

EN javascript, pas besoin de requete serveur pour ça !

je te conseil aussi de simplement prévoir ce cas et de retourner le formulaire pré remplis avec ce qui a déja été tapé et indiquer un message d'erreur pour faire propre ;)

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

Eléphant du PHP | 67 Messages

14 sept. 2012, 21:41

J'ai trouvé !!! Google est ton ami ...

J'ai remplacé

<input type="submit" value="Envoyer" name="submit" />
par
<INPUT type="button" value="Envoyer" onClick="document.formfull.submit();">


ça roule ...

Merci en tout cas

Eléphant du PHP | 67 Messages

14 sept. 2012, 21:47

réponse plus exacte :

EN javascript, pas besoin de requete serveur pour ça !

je te conseil aussi de simplement prévoir ce cas et de retourner le formulaire pré remplis avec ce qui a déja été tapé et indiquer un message d'erreur pour faire propre ;)

@+
Merci ...

J'ai déjà mes champs obligatoires avec ma fonction de contrôle dans ma page de traitement
Par contre, ce qui m'intéresse beaucoup est de savoir comment faire pour sauvegarder le formulaire pré-rempli en cas d'erreur.
Chez moi, s'il y a une erreur, je renvoie vers ma page originale (formulaire) avec une variable texte correspondant à l'erreur mais le formulaire est vide !!!
Il y a moyen de reprendre les champs déjà remplis ?

Merci