Remplacer window.open

Résolu
amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 octobre 2009 - 2 juin 2008 à 11:25
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Derniè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é?

Faites vous plaisir !!
A voir également:

17 réponses

amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 octobre 2009
2 juin 2008 à 15:14
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 !!
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 juin 2008 à 11:49
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]
amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 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.

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

Une idée?

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

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

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

Faites vous plaisir !!
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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és 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
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&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)
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
2 juin 2008 à 13:44
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)
amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 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...

une autre idée?

Faites vous plaisir !!
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
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]
amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 octobre 2009
2 juin 2008 à 15:08
not possible....

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

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

merci pour tout

Faites vous plaisir !!
amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 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.

Faites vous plaisir !!
maelob Messages postés 943 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 7 août 2009 3
2 juin 2008 à 15:52
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)
Rejoignez-nous