Remplacer window.open [Résolu]

amateurjava
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Dernière intervention
12 octobre 2009
- 2 juin 2008 à 11:25 - Dernière réponse : maelob
Messages postés
944
Date d'inscription
mardi 14 novembre 2006
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 !!
Afficher la suite 

Votre réponse

17 réponses

Meilleure réponse
amateurjava
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Dernière intervention
12 octobre 2009
- 2 juin 2008 à 15:14
3
Merci
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 !!

Merci amateurjava 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de amateurjava
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
- 2 juin 2008 à 11:49
0
Merci
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]
Commenter la réponse de cs_bultez
amateurjava
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Dernière intervention
12 octobre 2009
- 2 juin 2008 à 12:20
0
Merci
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 !!
Commenter la réponse de amateurjava
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
- 2 juin 2008 à 12:41
0
Merci
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]
Commenter la réponse de cs_bultez
amateurjava
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Dernière intervention
12 octobre 2009
- 2 juin 2008 à 13:18
0
Merci
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 !!
Commenter la réponse de amateurjava
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
- 2 juin 2008 à 13:35
0
Merci
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]
Commenter la réponse de cs_bultez
maelob
Messages postés
944
Date d'inscription
mardi 14 novembre 2006
Dernière intervention
7 août 2009
- 2 juin 2008 à 13:43
0
Merci
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)
Commenter la réponse de maelob
maelob
Messages postés
944
Date d'inscription
mardi 14 novembre 2006
Dernière intervention
7 août 2009
- 2 juin 2008 à 13:44
0
Merci
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)
Commenter la réponse de maelob
amateurjava
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Dernière intervention
12 octobre 2009
- 2 juin 2008 à 14:51
0
Merci
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 !!
Commenter la réponse de amateurjava
cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Dernière intervention
15 octobre 2013
- 2 juin 2008 à 14:59
0
Merci
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]
Commenter la réponse de cs_bultez
amateurjava
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Dernière intervention
12 octobre 2009
- 2 juin 2008 à 15:08
0
Merci
not possible....

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

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.