In sostanza, non puoi generare il file CSV e il collegamento ad esso in una volta sola. (È necessario introdurre il concetto di "modalità" di pagina e attivare la modalità di download tramite un ...pagename.php?mode=download o simile. È quindi possibile utilizzare l'istruzione switch di PHP per attivare $_GET['mode'] nel tuo script.)
Detto questo, l'intestazione del tipo di contenuto testo/csv che stavi utilizzando è corretta, anche se potresti anche voler emettere le intestazioni Content-Length e Content-Disposition. Dopo aver generato i dati del file, assicurati anche di interrompere l'elaborazione di script aggiuntivi tramite exit
di PHP funzione.
Inoltre, sarebbe probabilmente molto meno fastidioso (e sarà sicuramente più veloce/più efficiente in termini di memoria) utilizzare MySQL SELEZIONARE ... IN OUTFILE struttura (se hai i permessi) piuttosto che usare PHP per raccogliere i dati.