[php] redirect werkt niet na genereren csv

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil de geopende popup sluiten na het genereren van een csv bestand:
PHP:
1
2
3
4
5
6
7
header("Content-Type: text/csv"); 
    header("Content-Disposition: attachment; filename=abonnees-". $date .".csv"); 

print( $prospectHTML );
    
/* redirect to close script */
header( "Location: closewindow.php" );


na het printen van de $prospectHTML gebeurt er niets...
hij komt helemaal niet bij het redirect script?

hoe kan ik deze pagina sluiten na het opslaan van het csv bestand?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

PHP != javascript...

Je genereert een html pagina met headers. De headers worden eerst verstuurd (waaronder de Location: -header) en vervolgens pas de HTML. Ook al zet je je header() code onderaan (Vandaar dat je hiervoor output-buffering nodig hebt).

Je kunt beter een regeltje javascript onderaan genereren dus ;)

edit:

Verder snap ik het nut niet helemaal van dit script.. Je opent een scherm, print een CSV en sluit hem gelijk weer :? Waarom print je dan die hele CSV naar het scherm..

[ Voor 41% gewijzigd door Bosmonster op 13-02-2004 11:36 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
een javascript maakt geen verschil, hij komt daar volgens mij gewoon niet terecht...
kan ik niet iets van de sluiten of openen knop afvangen van de windows download popup oid?

[edit]
bosmonstrosity -> die popup print dus de hele boel naar een file die je kunt opslaan. Daarna wil ik het venster sluiten.

[ Voor 28% gewijzigd door Verwijderd op 13-02-2004 11:40 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Hmm.. als je een csv zo opent zal die waarschijnlijk Excel inline opstarten (dat doet ie hier iig en is standaard Office instelling) en die parset inderdaad geen javascript. Ik kan dus zo geen manier bedenken om het direct af te sluiten.

[ Voor 14% gewijzigd door Bosmonster op 13-02-2004 11:44 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
nee hij geeft een opslaan venster waar je de locatie ed kunt kiezen, na het opslaan kun je op openen, sluiten ed klikken (standaard grijs windows ding)...
ik wil na het opslaan het venster kunnen sluiten, nu blijft er een kaal wit venster staan

[edit]
aha hij zet dit nu in de csv.
<b>Warning</b>: Cannot add header information - headers already sent by (output started at E:\foxserv\www\themanager\relatiebeheer\csv\abonnees.php:54) in <b>E:\foxserv\www\themanager\relatiebeheer\csv\abonnees.php</b> on line <b>57</b><br />
hoe kan ik aangeven dat hij moet stoppen met het zenden van de output naar het csv bestand? het javascript komt btw ook gewoon in de csv te staan...

[ Voor 55% gewijzigd door Verwijderd op 13-02-2004 11:50 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Verwijderd schreef op 13 februari 2004 @ 11:47:
nee hij geeft een opslaan venster waar je de locatie ed kunt kiezen, na het opslaan kun je op openen, sluiten ed klikken (standaard grijs windows ding)...
ik wil na het opslaan het venster kunnen sluiten, nu blijft er een kaal wit venster staan
Dat hang tdus erg af van welke programma's je aan CSV gekoppeld hebt ;) Iemand met Office krijgt dus misschien al heel wat anders.
hoe kan ik aangeven dat hij moet stoppen met het zenden van de output naar het csv bestand? het javascript komt btw ook gewoon in de csv te staan...
headers zullen ALTIJD als eerste behandeld worden. Je kunt middels outputbuffering (ob_start()) zorgen dat je altijd nog headers op kunt geven, maar dus komt dus doordat de gehele pagina gebuffered wordt ipv dat iedere echo en print direct naar de browser gestuurd wordt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
header("Content-Disposition: attachment; filename=abonnees-". $date .".csv");

Naar mijn weten garandeerd mij dit dat jouw excel zich er niet mee gaat bemoeien ;) Je krijgt na het opslaan de keuze openen, thats where excel kicks in :)

maar er moet toch iets zijn dat zegt dat je nu wilt stoppen met het depositen van de content?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Verwijderd schreef op 13 februari 2004 @ 11:58:
PHP:
1
header("Content-Disposition: attachment; filename=abonnees-". $date .".csv");

Naar mijn weten garandeerd mij dit dat jouw excel zich er niet mee gaat bemoeien ;) Je krijgt na het opslaan de keuze openen, thats where excel kicks in :)

maar er moet toch iets zijn dat zegt dat je nu wilt stoppen met het depositen van de content?
Je script gooit naar de browser wat ie heeft. Wil je hier controle over dan moet je (komt ie weer) met output-buffering werken.

Blijft een feit dat als er ook maar 1 bitje content verstuurd is je GEEN headers meer kunt versturen (zoals je eerste melding ook al weergaf). Wat jij schetst in je topic start is dus onmogelijk. Als de Location-header wel gebruikt wordt namelijk zal die behandeld worden VOOR je de CSV op het scherm hebt.

[ Voor 11% gewijzigd door Bosmonster op 13-02-2004 12:15 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Blijft een feit dat als er ook maar 1 bitje content verstuurd is je GEEN headers meer kunt versture
nee dat begrijp ik, maar er moet toch een andere manier kunnen zijn om het venster te sluiten na het opslaan van het "attachement"?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Verwijderd schreef op 13 februari 2004 @ 12:16:
[...]

nee dat begrijp ik, maar er moet toch een andere manier kunnen zijn om het venster te sluiten na het opslaan van het "attachement"?
Dat is dus een probleem ;) Je stuurt geen html, dus kunt geen html/javascript gebruiken. CSV kent verder geen script of iets dergelijks.

Als je het mij vraagt dus: nee, het kan niet

Wat je zou kunnen proberen is de CSV in een frame te laden in de popup. Dan kun je daaromheen wel javascirpt gebruiken om het venster te sluiten. Blijft echter een probleem om het event af te vangen van dat de CSV geladen is. Mogelijk kun je van buitenaf wel een onload-handler plakken aan zo'n (i-)frame.

[ Voor 27% gewijzigd door Bosmonster op 13-02-2004 12:23 ]

Pagina: 1