Remplacer window.open [Résolu]

Signaler
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
12 octobre 2009
-
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
-
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é?

Faites vous plaisir !!

17 réponses

Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
12 octobre 2009

Bon, ça y est j'ai trouvé... bete comme choux :
<script>
window.location.replace('impression.php?a='+a+'&b='+b);
</script>

Pourquoi chercher midi à 14H

Pour ceux à qui ça servira..

Faites vous plaisir !!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour,

    pas sûr d'avoir compris....
    <form method="get" action="mapagede creationdu pdf.php?"...
       <... name="tes input" value="tes valeurs" ...

    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

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
12 octobre 2009

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.

J'espère avoir été clair...

Une idée?

Faites vous plaisir !!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
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.

    ou je n'ai pas compris ton souci....

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
12 octobre 2009

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)?

Faites vous plaisir !!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
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]
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
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&amp;choix=teams Exporter les &eacute;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)
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
J'ai pas précisé la j'ai écis qu'une ligne mais tu peux en écrire plus ;-)

<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)
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
12 octobre 2009

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...

une autre idée?

Faites vous plaisir !!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
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]
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
12 octobre 2009

not possible....

il faudrait une fonction javascript qui simule un click sur une balise ...

Faites vous plaisir !!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
click sur une balise mon Site]     [M'écrire]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
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]
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
J'ai pas compris mais tan mieux si ça fonctionne
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
12 octobre 2009

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)

merci pour tout

Faites vous plaisir !!
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
12 octobre 2009

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.

Faites vous plaisir !!
Messages postés
943
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
7 août 2009
3
Aaaaaaaah, d'accord je comprend mieux,
Penses a réponse acceptée ;-)

<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)