Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/04/2007, 17h05   #1
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
Par défaut Forcer le téléchargement

Ré-édit plus clair p-e...

En fait ce que je veux faire c'est après l'affichage graphique dans une page
ouvrir un download dialogue pointant sur un pdf que je viens de généré..(selon le clique de l'usager)
comment je fais, puisque comme j'ai des sortie vers l'explorateur, je ne peux pas me servir des header..
merci

Citation:
Bonjour
j'ai un script de téléchargement dans une page pas d'affichage (download.php)

J'utilise se script la plupart du temps dans un lien du genre
"cliquer ici pour télécharger le pdf" en lui passant un chemin d'accès en parametre et le nom de fichier
tout fonctionne

Ce que je veux faire maintenant
Dans la page (pageFeuille.php)
J'ai une feuille de travail, l'utilisateur peut soir faire imprimer 1 seule entrée ou encore tout la feuille de travail
J'ai donc 2 boutons qui font appel à une page(printFeuilleTravail.php) qui génère un document pdf en fonction du choix de l'utilisateur

Une fois le script de formattage du pdf effectué, je le redirige vers pageFeuille.php...
Mon post est le suivant, que j'arrive sur la page pageFeuille.php, comment est-ce que je fais pour forcer le téléchargement automatiquement du pdf que je viens de faire?

Est-ce que je dois copier-coller mon script de download...(ca m'ennuie un peu car j'ai déjà une page qui fait ce code)
Ou
Est-ce que je peux appeler cette page directement...(ce que j'aimerais faire en fait)
La solution 2 me pose probleme, car je ne sais pas comment faire pour inclure ce script et forcer directement la fenetre de téléchargement

Des idées?
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 18h39   #2
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
Bon j'ai fait quelque trucs pour contourner
mais encore moins de succès

je ne peux pas insérer un script de téléchargement directement dans mon code puisqu'il utilise les header et je suis dans une page d'affichage

voilà pourquoi je voulais passer par mon script qui est dans une autre page
j'ai essayé avec un require, ca fonctionne pas
Code :
1
2
3
4
 
if(isset($flagPrintPDF) && $flagPrintPDF == 1){
  require('./download.php?type=pdf&file=feuilleDeTravail26.pdf&dossierPath='.$_SESSION['saveDirectory'].'FeuilleTravail/');
}
ca me fait un warning et une fatale erreur comme suit:
Citation:
Warning: main(./download.php?type=pdf&file=feuilleDeTravail26.pdf&dossierPath=D:GDRBD/FeuilleTravail/): failed to open stream: Invalid argument in C:\server\Apache2\htdocs\gdr\Page\feuilleDeTravail.php on line 637

Fatal error: main(): Failed opening required './download.php?type=pdf&file=feuilleDeTravail26.pdf&dossierPath=D:GDRBD/FeuilleTravail/' (include_path='.;c:\php4\pear') in C:\server\Apache2\htdocs\gdr\Page\feuilleDeTravail.php on line 637
si je place le code de la page download.php dans ma condition à la place du require...ben l'erreur est logique, cannot send output blabla à cause des header

ya une autre facon de procéder???
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 01h19   #3
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Oui, construit ton code intelligemment pour ne pas avoir à envoyer de header quand on demande un téléchargement
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 15h07   #4
Membre confirmé
 
Inscription : avril 2007
Messages : 254
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 254
Points : 262
Points : 262
En javascript? (approximativement)
Code :
1
2
3
4
5
6
7
8
9
 
function actionWhenLoaded()
{
<?php
  print('window.open("./download.php?type=pdf&file=feuilleDeTravail26.pdf&dossierPath='.$_SESSION['saveDirectory'].'FeuilleTravail/","_blank")\n');
?>
}
[...]
<BODY onload="actionWhenLoaded()">
Ouach est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 15h41   #5
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
Citation:
Envoyé par Mr N.
Oui, construit ton code intelligemment pour ne pas avoir à envoyer de header quand on demande un téléchargement
Et bien c'est une réponse qui m'avance énormément, merci
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 15h52   #6
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 426
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 426
Points : 2 813
Points : 2 813
oui elle t'avance

une page ne peux pas répondre deux chose en même temps
alors tu en fait une pour le téléchargement et une pour l'affichage
c'est aussi simple que ça

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 16h04   #7
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
Et bien c'est justement ce que j'ai en fait
j'ai ma page de téléchargement qui contient seulement le script de téléchargement que j'appel en passant en parametre le nom de fichier et le répertoire dans lequel il est contenu.
cette page s'appelle download.php

Mais je ne sais pas comment l'appeler à partir de la page feuilleTravail.php
normalement je passe par un lien en ayant comme référence download.php ce qui fonctionne très bien
mais là, ce que je veux faire est différent, j'aimerais faire un appel automatique (un peu comme si je mettais la référence dans le liens et déclanchais sont événement click quand je capte une variable GET

Mais bon, je crois que c'st impossible alors j'ai passé par une autre solution que je ne trouve pas très belle en fait

J'explique: dans le onload de ma page, je récupère l'url(en javascript) et je vais voir les variable passé, si celle que j'attend est présente, j'ouvre une fenetre modal avec 2 lien (télécharger le pdf ou fermer la fenetre), ca fonctionne bien, ma page principale continue de s'afficher au complet derrière

Quand je click sur télécharger, ca fonctionne aussi, mais ca m'ouvre une 3e fenetre (1ere mon application, 2e la Modale et 3e, la page download.php de mon script de download)
alors je ne sais pas, est-ce que c'est car je suis dans une fenetre modale que ca m'ouvre une 3e fenetre car en temps normal la référence dans le liens à ma page download.php n'ouvre pas de fenetre, ca fait seulement afficher la dialogbox de téléchargement
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2007, 21h19   #8
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
Donc si je comprends bien
on ne peut pas appeler une autre page lorsqu'on est dans une fenetre modale??
si j'ai 2 liens comme suit dans ma page modale:
Code :
1
2
3
4
5
 
echo '
 <a href="./download.php?type=pdf&file='.$nomFichier'&dossierPath='.$saveDir.'">Version imprimable</a>
<br><a href="#" onclick="javascript:window.close();">Fermer [X]</a>
';
le clieck sur version imprimable m'ouvre une 3e fenetre (1-application + 2-modale + 3-telechargement) avec l'url suivant
Citation:
//localhost/site/Page/download.php?type=pdf&file=alerte.pdf&dossierPath=D:GDRBD/Alertes/
download.php est ma page contenant le script de téléchargement seulement
Dans cette 3e page...ma boite de dialogue de téléchargement s'affiche qui me permet d'ouvre ou enregistrer le document pdf...

Le probleme est la 3e fenetre, je ne la veut pas, je voudrais que ca fonctionne comme un lien que je clique dans mon application, un lien identique comme le code plus haut, mais bon qui n'execute que le script de téléchargement sans m'ouvrir une fenetre de l'explorateur...

Est-ce que c'est parceque je suis dans la fenetre modale que ca fait cela?
car dans une popup normal (window.open) ca execute le script sans m'ouvrir une 3e fenetre...exactement comme je voudrais l'avoir...

Je n'utilise pas le window.open car je veux forcer l'utilisateur a fermer la fenetre avant de poursuivre à remplir son formulaire...c'est une fenetre qui sert d'alert en fait la fenetre modale

Merci pour votre aide et ou Autre manière de procéder
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2007, 23h53   #9
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
C'est quoi une fenetre modale ?
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 15h07   #10
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
une popup ouvert avec showModalDialog()

Mais je viens de m'appercevoir que ce n'est pas interpreter par ff, seulement par ie...
en javascript l'appel est comme suit:

Code :
1
2
3
 
window.showModalDialog("popupFlag.php","popupAlertAdresse",
	"dialogWidth:800px;dialogHeight:520px;center:1;scroll:1;help:1;status:1");
Ce qui est sympa c'est que la fenetre garde le focus, donc l'utilisateur ne peux aller clicker dans la fenetre de l'application principale, tant qu'elle n'est pas fermé

Donc après m'etre acharner sur un probleme difficile a expliquer, j'en suis venu à me dire que le véritable probleme provenait de cette method showModalDialog()...
alors je réitère ma question, est-ce qu'il y a une autre manière de faire cette popup, mais forcer l'utilisateur à fermer la popup avant de poursuivre dans l'application principale?

Merci
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2007, 17h22   #11
Membre émérite
 
Avatar de ozzmax
 
Inscription : novembre 2005
Messages : 986
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : novembre 2005
Messages : 986
Points : 863
Points : 863
Envoyer un message via MSN à ozzmax
J'ai trouvé une alternative à mon probleme
merci de votre aide tout de même

J'avais un double post en fait, et au bout de la ligne les probleme se sont confronté
je laisse liens sur celui javascript qui n'est pas tout à fait résolu

http://www.developpez.net/forums/sho...d.php?t=324134

Bon weekend
__________________
La perfection n'est pas un but, l'amélioration constante devrait l'être!
La position des Développeurs de developpez avec les explications
ozzmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h40.


 
 
 
 
Partenaires

Hébergement Web