
In questo articolo vedremo come utilizzare Php per leggere i dati contenuti in un fil CSV per stamparli su una tabella HTML.
L’utility che creeremo potrebbe essere utile ad esempio per inserire all’interno di un sito statico, dellenews, o una serie di eventi, o qualsiasi cosa che possa essere aggiornata semplicemente aggiornando il file CSV, senza bisogno di installare pesanti CMS.
Un file CSV è in un semplice file di testo formattato secondo certe regole,compatibile con i principali programmi per la trattazione di fogli elettronici come Excel, il foglio di calcolo di open office.
Ogni riga contiene i dati che sono separati tra loro dal carattere “;”
Creiamo il file dati.csv con all’interno l’elenco (per esempio ) delle news su 4 colonne ad esempio (idRiga, data, news, autore) per avere una struttura simie a quella di un database.
Ci sono 2 modi per realizzare quanto detto.
Nel primo metodo useremo la funzione php fopen() per leggere dal file e split() per recuperare i singoli campi
I METODO
Quello che dobbiamo fare e’ semplicemente leggere ogni riga del file e poi suddividere le varie colonne, spezzando ogni colonna con il metodo
1 | split(';', $riga) |
che ritorna un array con tutti valori separati da “;”.
ad esempio se avessimo:
$riga="pippo;pluto;paperino"; $valori=split(';', $riga);
avremmo un array con i valori {pippo,pluto,paperino}
< ?php print "<table border=1 width=90% >"; $fd= fopen ("dati.csv", "r"); $x=0; // Intestazione Tabella print "<tr>"; print "<td>ID</td>"; print "<td>Data</td>"; print "<td>News</td>"; print "<td>Autore</td>"; print "</tr>"; // News in archivio while (!feof ($fd)) { $riga=<strong>fgets</strong>($fd, 4096); if($riga!="") { $arr=<strong>split</strong>(';', $riga); print "<tr>"; print "<td>".$arr[0]."</td>"; print "<td>".$arr[1]."</td>"; print "<td>".$arr[2]."</td>"; print "<td>".$arr[3]."</td>"; print "</tr>"; $x++; } } print ""; fclose($fd); ?>
II METODO
Una funzione PHP molto interessante per il parsing dei file CSV è fgetcsv
Con questa funzione si possono leggere file in formato CSV e ottenere un array già formattato con i campi, da poter leggere riga per riga!
In questo modo evitiamo di dover usare la funzione split per diviere la riga.
vediamo l’esempio
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $file="dati.csv"; $delimiter = ","; $echo = "<table>"; //variabile da stampare //apro il file if (($fp = fopen($file, "r")) !== false) { //per ogni riga del file... while (($data = fgetcsv($fp, 1000, $delimiter)) !== false) { //...inserisco una riga nella tabella $echo .= "<tr>"; foreach( $data as $el ) $echo .= "<td>".$el."</td>"; $echo .= "</tr>"; } fclose($fp); } //restituisco la tabella $echo .= "</table>"; echo $echo; } //restituisco la tabella $echo .= ""; echo $echo; |
Articoli che potrebbero interessarti:
- Mac Osx : Visualizzare i file nascosti I file nascosti sono possono essere file di qualsiasi tipo ma che non sono visibili...
- Htacces Tool per modificare velocemente il file .htaccess Qualche settimana fa avevamo pralato del file .htaccess, della sua importanza e dei modi di...



ciao,
vorrei usare questo codice, magari prima in locale, però non funziona, mica potresti spiegare un pò meglio come usare il codice? magari postando anche un’esempio di csv
grazie mille
Ciao, do per scontato che tu abbia installato un server web con php sul tuo pc e che il server sia attivo.
Per quanto riguarda il primo metodo :
nella directory root del webserver (se hai installato wamp di solito è c:\wamp\www\)
crea il file index.php e copiaci dentro il primo pezzo di codice.
Nella stessa cartella crea il dile dati.csv ( se vuoi usare un’altro nome o un’altro percorso cambia il nome file nella riga 3 del codice).
All’interno del file inserisci le righe
Le righe sono fatte così:
1;10/11/2010;riga 1 di test;Mauro
2;12/11/2010;”ciao ciao”;Pippo
3;13/11/2010;altra riga;Giovanni
4;11/11/2010;prova;Guest
5;10/12/2010;”ciao ciao”;Mauro
6;12/12/2010;”ciao ciao”;Autore
7;13/12/2010;”ciao ciao”;Mauro
se vuoi modificare il carattare separatore (ad esempio la virgola ‘,’ al posto del punto e virgola ‘;’) modifica la riga 19 del codice.
Salvato il file csv
per vedere lo script all’opera sul browser digita l’indirizzo http://127.0.0.1/ndex.php
e dovresti vedere tutte le righe del file csv
nel secondo metodo l’output restituito è separato da “;” per togliere questo fastidioso problema e impaginare perfettamente la tabella basta sostituire la variabile
$delimiter = “,”;
con
$delimiter = “;”;
e tutto magicamante funzionerà, poi si può iniziare a fare esperimenti come
$file=”dati.csv”;
$delimiter = “;”;
$echo = “”; //variabile da stampare
//apro il file
if (($fp = fopen($file, “r”)) !== false)
{
//per ogni riga del file…
while (($data = fgetcsv($fp, 1000, $delimiter)) !== false) {
//…inserisco una riga nella tabella
$echo .= “”;
foreach( $data as $el ) $echo .= “”.$el.”";
$echo .= “”;
}
fclose($fp);
}
//restituisco la tabella
$echo .= “”;
echo $echo;
}
//restituisco la tabella
$echo .= “”;
echo $echo;
così le parole in output saranno colorate di rosa!
Ciao,
.
innanzitutto grazie del tutorial
Avrei un dubbio…
ma se nel caso avessi l’ultima voce del mio file csv che vorrei fosse un link (tipo scaricare un pdf) come devo fare?….io ho utilizzato il metodo 2.
grazie
Ciao,
se il campo che leggi è un url del tipo http://www.modifycando.com/file.pdf
basta racchiuderlo tra due tag per visualizzarlo correttamente.
Prendendo l’esempio del posts sarebbe :
In questo modo nella colonna uscira scritto “Scarica il file” e ci sarà il link letto dal file
Ciao, grazie del tutorial , e fatto benissimo XD, volevo chiederti e se all’interno del mio file volessi cercare un campo ben preciso ad esempio : se voglio cercare l’autore “pippo ” all’interno del mio fil CSV e in output voglio avere l’intera riga con tutti i campi ovvero : 2;12/11/2010;”ciao ciao”;Pippo
come dovrei scriverlo ??
grazie in anticipo