Redirection après un "enregistrer sous..." en PHP ? - PHP - Programmation
Marsh Posté le 24-07-2006 à 11:05:57
a la place de
@readfile("$filename" ) or die("File not found." );
tu mets ta generation de fichier
comme ca pas besoin de passer par un fichier temporaire : tu peux telecharfger les données tout de suite
Marsh Posté le 24-07-2006 à 11:38:18
Bonjour et merci pour ta réponse,
Donc... je fais appelle directement à ma fonction de création du fichier Excel ?
Mais comment va t il se télécharger directement sur le poste client ??
Marsh Posté le 24-07-2006 à 11:43:31
tu cree une page "genererExcel.php" qui contient :
Code :
|
et tu utilise un lien du genre :
< href="./genereFichierExl.php"> cliquez ici pour enregistrer le fichier excel</a>
tu utilise quoi pour generer le fichier excel ? parceque tu peux peut etre te passer de l'etape 'ecriture sur le disque'
Marsh Posté le 24-07-2006 à 11:50:48
Sinon il reste toujours la solution du :
header("Refresh: XX; URL=fichierExcel.xls" );
Marsh Posté le 24-07-2006 à 11:54:41
Merci encore...
Pour générer le fichier Excel, j'utilise une fonction assez barbare que j'ai trouvé sur le net...
Code :
|
Voili, voilou
Marsh Posté le 24-07-2006 à 16:09:11
attention, c'est du COM! Sur un serveur en production, tu risques d'avoir un pb d'alloc de mémoire au bout d'une certain temps car $excel->Quit() ne fonctionne pas bien. Le processus excel reste toujours en mémoire.
Tu devrais voir du côté de la lib sous GPL "Spreadsheet_Excel_Writer" : http://pear.php.net/package/Spreadsheet_Excel_Writer
Marsh Posté le 24-07-2006 à 16:23:45
Merci beaucoup... je vais looké cela.
Y'a t il une fonction qui permette le download du fichier sur le poste client ???
Car là je lutte vraiment pour faire fonctionner cela correctement... Je m'explique...
Comme je n'ai pas réussi à générer + downloader le fichier directement, je passe en 2 étapes comme indiqué ci-dessus... pas très pratique.
Et lors de l'étape du clic sur 'Enregistrer le fichier'... il ne se passe rien !!! Ce n'est qu'au clic suivant que le processus du header se déclenche et me demande d'enregistrer le fichier !!!
Je comprends pas trop là !!!
Si z'avez des ampoules pour m'apporter de la lumière, n'hésitez pas
Marsh Posté le 24-07-2006 à 17:36:26
Bon je viens de mettre en place ma meme fonction de génération de fichier mais via Spreadsheet_Excel_Writer et PEAR.
Mais j'ai toujours le meme souci pour ce qui est de l'enregistrement du fichier !!!
Marsh Posté le 24-07-2006 à 17:44:33
jordel a écrit : Bon je viens de mettre en place ma meme fonction de génération de fichier mais via Spreadsheet_Excel_Writer et PEAR. |
mais t'auras plus le pb de mauvaise désalloc mémoire
Marsh Posté le 24-07-2006 à 17:46:16
Merci... c'est vrai que meme au niveau du temps de chargement du fichier... c'est plus rapide !!!
Cependant... j'ai toujours ce fu*ù$^# probleme avec la sauvegarde du fichier !
Marsh Posté le 25-07-2006 à 11:16:34
Bonjour,
Bon j'arrive bien à enregistrer mon fichier Excel comme dit ci-dessus...
Mais !!! ma page ne se recharge pas derrière...
Normal me direz vous, car la génération et l'enregistrement du fichier se font dans le header.
Mais alors comment faire pour charger sa page et lancer l'enregistrement sans avoir de Warning sur l'utilisation des headers ???
Merci d'avance...
Marsh Posté le 25-07-2006 à 14:07:53
y'a peut-être plus simple, mais sinon, une fois la page qui génère le fichier chargée, tu peux tenter un redirection en javascript vers celle qui lance le téléchargement...
Marsh Posté le 25-07-2006 à 14:31:50
Ou avant la génération du fichier mettre :
header("Refresh: 1; URL=fleFichier" );
Marsh Posté le 25-07-2006 à 17:01:01
Bon... ça redirige pas !!! snifff...
Le problème vient du fait que la fonction doit se faire en header... sinon ça passerait tout seul !!! Dommage !!!
Hop un ptit schéma :
Marsh Posté le 24-07-2006 à 09:28:54
Bonjour,
J'ai créé un script qui permet de générer un fichier Excel à partir de ma base de données... et je souhaiterai dans la foulée proposer d'enregistrer le fichier sur le poste client.
Je n'ai pas réussi à réaliser ceci proprement à savoir :
Ma page listing.php -> liste les membres contenus dans ma base, un lien "générer au format Excel" permet de générer le fichier Excel sur le serveur.
Si je clique dessus, ce lien est remplacé sur la page par "Enregistrer le fichier générer". Il faut alors cliquer dessus pour enregistrer le fichier sous...
Mais comble du comble, je n'arrive pas à reloader ma page en l'état d'origine !
Pour enregistrer mon fichier, je passe par des header("blablabla" )
if (isset($_SESSION["dlfilename"]) && $_SESSION["dlfilename"]!="" )
{
$filename = $_SESSION["dlfilename"];
header("Pragma: public" );
header("Expires: 0" );
header("Cache-Control: must-revalidate, post-check=0, pre-check=0" );
header("Cache-Control: private",false);
header("Content-Type: application/force-download" );
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
header("Content-Transfer-Encoding: binary" );
header("Content-Length: ".@filesize($filename));
set_time_limit(0);
@readfile("$filename" ) or die("File not found." );
unset($_SESSION["dlfilename"]);
// ------------------------------------------
// Est il possible de faire une redirection ici ???
// ------------------------------------------
}
Je souhaiterai avoir votre expertise pour que lors du click sur "générer au format Excel" je puisse Enregistrer sous... directement !!!
Merci d'avance.
Message édité par jordel le 24-07-2006 à 11:39:09