amateurjava
Messages postés88Date d'inscriptionvendredi 8 octobre 2004StatutMembreDernière intervention12 octobre 2009
-
2 juin 2008 à 11:25
maelob
Messages postés943Date d'inscriptionmardi 14 novembre 2006StatutMembreDernière intervention 7 août 2009
-
2 juin 2008 à 15:52
Bonjour,
je cherche à lancer la creation d'un pdf (par FPDF) à partir d'une page, les données provenant de champs de formulaire de cette page.
Jusqu'a présent, je récupérais les données du formulaire par document.getElementById('monform').moninput.value puis je lançait un window.open('mapagede creationdu pdf.php?mesinput=mesvaleurs','','');
Je cherche en fait à remplacer le window.open (car ouvre un navigateur avant de générer le pdf ... c'est pas beau) .
Il faudrait donc que je puisse lancer directement mon lien php ('mapagede creationdu pdf.php?mesinput=mesvaleurs') de ma page de formulaire comme je le ferais si mes données étaient déjà en format de variable php ($input1=mavaleur,...)
Qq'un a t il une idée ou une méthode à laquelle je n'ai pas pensé?
ou alors tu veux causer d'AJAX ?
appel php depuis javascript, réponse dans une variable
donc sans recharger la page
recherche xmlhttprequest ou ajax....
j'ai une ch'tite fonction... sur mon site
http://marcel-bultez.chez-alice.fr/utilitaires/GAG/GAG.zip
amateurjava
Messages postés88Date d'inscriptionvendredi 8 octobre 2004StatutMembreDernière intervention12 octobre 2009 2 juin 2008 à 12:20
Excuse mon manque de clarté...
actuellement, j'ai un form sur une page php.
Appelons la form.php
<form name='x' id='x'>
imprime
</form>
le script :
fonction fonctionjavascript(){
a=document.getElementById('x').input1.value;
b=document.getElementById('x').input2.value;
window.open('impression.php?a='+a+'&b='+b,'','width=.......');//impression.php générant un pdf avec FPDF.
}
ça m'ouvre une popup puis ça lance la creation du pdf... ça marche mais c'est pas beau :>)
Je voudrais en fait lancer directement 'impression.php?a='+a+'&b='+b' de ma page form.php.
si a et b étaient des variables php, pas de pb car j'aurais fait
&b=<?=$b;?>impression
Je sais que ça marche.
par contre, actuellement les valeurs de a et b ne sont pas actuellement enregistrées dans $a et $b puisqu'aucun traitement n'a été fait.
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 2 juin 2008 à 12:41
pourquoi tu passes par un window.open ???
<form name= 'x' id='x'
action="impression.php"
method="get"
target="si tu veux une adresse pour la réponse " >
</form>
impression.php traitera $_GET['input1'] et $_GET['input2']
la réponse du php sera afichée dans le target du form (par défaut = la page qui appelle )
si tu ne veux rien afficher : id d'un iframe caché, ou ajax,
qui lui reçoit la réponse dans une variable et dont tu fais ce que tu veux.
amateurjava
Messages postés88Date d'inscriptionvendredi 8 octobre 2004StatutMembreDernière intervention12 octobre 2009 2 juin 2008 à 13:18
j'utilise ajax car je veux pas de reload de la page (application de gestion) donc action="impression.php" j'ai oublié depuis longtemps... :>)
pour le window.open, c'est bien ce que je cherche à éviter
j'ai bien pensé utiliser un xmlhttprequest ou innerhtml (c'est plus simple) en créant un div avec display=none, mais ça marche pas.
Il existe pas une fonction javascript qui affiche une page sans avoir besoin d'une popup et sans reloader la page? (style header:location:impression.php en php)?
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 2 juin 2008 à 13:35
pas simple hein !
n'utilises pas window.open....
fait un appel ajax à impression.php et pis c'est tout...
<hr /> Cordialement Bul [mon Site] [M'écrire]
maelob
Messages postés943Date d'inscriptionmardi 14 novembre 2006StatutMembreDernière intervention 7 août 20093 2 juin 2008 à 13:43
Salut,
Pour ma part quand je génére des fichiers je passe directiement par php (sans rechargement de page) un exemple (un fichier csv) vaut mieux que de longues explications :
J'ai mon lien sur la page
[export_teams.php?prjid=1&choix=teams Exporter les équipes au format csv (excel)]
Et la page export_teams
if (!$file = fopen("./files/export_teams.csv", "w")) on_error ("Erreur lors de l'ouverture du fichier");//on ouvre
if (!fwrite($file, ",Numéro d'équipe, Nom, Prénom, login\n\n")) on_error("Imposible d'écrire dans le fichier");//on écrit
header('Content-Type: text/x-csv; charset=UTF-8');//type de fichier
header('Content-Disposition: attachment; filename="export_teams_1.csv"');//on donne le nom
readfile('./files/export_teams.csv');//fichier source à télécharger
fclose($file);//on ferme
Et pas besoin de javascript pas besoin de gerer les utilisateur qui ne l'ont pas activé et pas de problème de popup (après si tu fais pas en php ça existe aussi avec les autres langages coté serveur)
PS : on_error c'est une fonction perso ça affiche un message d'erreur pas important ici.
<hr size="2" width="100%" />
Maelo ou Elo --> Mon blog
Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir. (Jacques Prévert)
amateurjava
Messages postés88Date d'inscriptionvendredi 8 octobre 2004StatutMembreDernière intervention12 octobre 2009 2 juin 2008 à 14:51
Merci pour l'exemple maelob, j'utilise ce genre de script pour faire des dump de base.
si je fais un appel java, ça ne marche pas car impression.php génère un pdf avec FPDF
j'ai même essayé de creer un fichier intermediaire qui récupere les valeur javascript pour les convertir en variable php, puis lancer impression.php avec
a=$_GET["a"];
b=$_GET["b"];
header("location:impression.php?a=$a&b=$b");
mais je ne peut afficher le pdf...:
si je met un eval(xhr_object.responseText) en retour, il me met une erreur de syntaxe
si je creer un div et que je fais document.getElementById('lediv').innerHTML=xhr_object.responseText; il m'affiche le code du pdf mais ne m'ouvre pas le pdf...
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 2 juin 2008 à 14:59
tu veux donc appeler un .php qui crée un .pdf à afficher ?
appel php avec ajax,
coté php créer un fichier .pdf, retourner le nom de ce fichier
coté html/javascript on pourra donc afficher ce fichier
retourner le contenu du .pdf... je ne sais pas comment s'en sortir
coté client... peut-être est-ce possible ?
<hr /> Cordialement Bul [mon Site] [M'écrire]
cs_bultez
Messages postés13616Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 2 juin 2008 à 15:18
ah... on s'est croisé...
ma foi... j'étais à mille lieues de penser que tu voulais faire ça !
nickel si ça baigne et que cela te convient.
<hr /> Cordialement Bul [mon Site] [M'écrire]
amateurjava
Messages postés88Date d'inscriptionvendredi 8 octobre 2004StatutMembreDernière intervention12 octobre 2009 2 juin 2008 à 15:24
bultez,
pour creer un pdf à partir de php, on peut utiliser la classe FPDF (www.fpdf.org)
le script génère un fichier pdf (que l'on affiche dans un navigateur ou que l'on ouvre ou enregistre sans passer par le navigateur-ce que je voulais faire)
amateurjava
Messages postés88Date d'inscriptionvendredi 8 octobre 2004StatutMembreDernière intervention12 octobre 2009 2 juin 2008 à 15:44
maelob,
window.location.replace() fait une redirection (comme window.open dans l'absolu puisque elle redirige le focus sur une popup) sans intervention de l'utilisateur, c'est ce que je cherchais.. le lien vers mon fichier impression.php est automatique et le fichier pdf est généré automatiquement.