Newsgroup: it.comp.www.php
Titolo: esportare un csv

Ho la necessità di creare un file csv, e poi di mettere un link a quel
file in maniera tale che cliccando sul link l'utente abbia la possibilità
o di aprire o di salvare in locale tale file.
il codice è il seguente:
<?php session_start();$pas=$_SESSION["password"];$diri=$_SESSION["dirit"];
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>csv</title><link rel="stylesheet" href="stile.css"></head>
<BODY>
<?php
	$fd=fopen("contatti.csv","w");
	fwrite($fd,"nome;cognome;indirizzo;n");
	fwrite($fd,"Mario;Rossi;Sassarin");
	fwrite($fd,"Viola;Verdi;Cagliarin");
	fclose($fd);
	echo '<BR><a href="contatti.csv" target="_blanc">Esporta</a><BR>';
?>
</BODY></HTML>
nel corpo ho solo l'apertura del file csv, la scittura delle 3 righe, la
chiusura del file e infine il link; 
succede questo: la pagina visualizza il link 'Esporta', ma cliccando su di
esso viene aperta una nuova scheda che visualizza le seguenti scritte:
nome;cognome;indirizzo;
Mario;Rossi;Sassari
Viola;Verdi;Cagliari
invece che la solita finestra per aprire o salvare il file 
sbaglio qualcosa?
ciao e grazie
Ale
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

mi č venuto il dubbio e ho aperto la stessa pagina con IE: con questo
browser mi viene aperta la finestra di dialogo 'aprire o salvare il file'
da me tanto voluta, mentre con Mozilla succede quello che ho descritto
nella email precedente :(
cioč con IE tutto ok, mentre con firefox4 no!!!
come posso fare ad avere con tutti i browser la famosa finestra di dialogo
'aprire o salvare il file'?
ciao


 o di aprire o di salvare in locale tale file.
Devi utilizzare le intestazioni HTTP opportune.
Dovresti aggiungere qualcosa dal genere all'inizio dello script php:
Header('Content-Disposition: attachment; filename=contatti.csv');
P.S.
Non ti servono nemmeno i tag HTML dato che si tratta di un semplice csv.
Usa questo codice PHP:
<?php session_start();$pas=$_SESSION["password"];$diri=$_SESSION["dirit"];
?>
<?php
	Header('Content-Disposition: attachment; filename=contatti.csv');
	$fd=fopen("contatti.csv","w");
	fwrite($fd,"nome;cognome;indirizzo;n");
	fwrite($fd,"Mario;Rossi;Sassarin");
	fwrite($fd,"Viola;Verdi;Cagliarin");
	fclose($fd);
	echo '<BR><a href="contatti.csv" target="_blanc">Esporta</a><BR>';
?>
Ciao,
Riccardo
-- 
* JoWe.it - Sito Joomla! 1.6.3 Gratis
* 
http://www.jowe.it

grazie, ora provo


 Header('Content-Disposition: attachment; filename=contatti.csv');
Perché oggi mi sento pignoletto... suggerirei di aggiungere anche (prima
del content disposition)
	header('Content-Type: application/CSV');
o se si vuole associare il CSV a Excel dovrebbe funzionare anche
	header('Content-Type: application/vnd.ms-excel');
Da testare anche
	header('Content-Type: application/force-download');
che forza il download indipendentemente dal tipo file.
Se il file è voluminoso e si vuole avere l'indicazione del tempo di
download, può aiutare
	header('Content-Length: '.$length);
dove $length contiene la dimensione del file.
Tutte queste belle direttive posso dare comportamenti diversi a seconda
del browser.
saludos,
M.

come mi hai suggerito ho aggiunto al mio file php:
<BODY>
<?php
Header('Content-Type: application/CSV');
Header('Content-Type: application/force-download');
Header('Content-Disposition: attachment; filename=contatti.csv');
?>
(questo file è stato scaricato sul serverWeb di joomlahost)
e su IE funziona bene, cioè mi viene aperta la finestra di 'salva con
nome', 
mentre su FF cliccando sul link viene aperta una nuova scheda che
visualizza questo testo:
Laura;Rossi;Società;mail1@societa;Sassari;
Paola;Neri;Società;mail2@societa;Sassari;
Lina;Bianchi;Società;mail3@societa;Sassari;


 cut
Ho paura che l'unico modo per essere sicuro che il file non venga
visualizzato ma salvato sia quello di comprimerlo in formato zip o
similare.
Max
-- 
http://www.maxori.it
L'Arte è la capacità di fare cose di nessun valore
e di riuscire a venderle
F. Zappa