Leggere e scrivere su file
Quandi si realizzano degli script quasi sempre si ha necessita' di salvare i dati che vengono inseriti dagli utenti. Le strade che si possono seguire in questo caso sono due:
- Salvare i dati su file (ad esempio di estensione .txt, .dat, ecc..)
- Salvare i dati su database(ad esempio Access, Mysql, ecc..)
Salvare dati su file è conveniente quando la quantità di dati da salvare non è elevata e quando non si dispone di un database, se invece la quantità di dati da salvare è elevata, salvare i dati su database è la soluzione migliore in quanto manipolare i dati salvati così risulta più semplice e pratico. Ora soffermiamoci sul discorso dei file e vediamo come scrivere e leggere dati su un file di testo di nome "pippo.txt".
Ora nella pagina successiva andremo a vedere come scrivere su file.
Scrittura su file:
Per poter scrivere su file bisogna innanzitutto aprirlo. Utilizzeremo quindi la seguente istruzione:
$scrivi_file=fopen("pippo.txt","w");
$scrivi_file viene chiamato puntatore di apertura del file. fopen prende come primo argomento il nome del file e come secondo argomento la modalità di apertura del file. La "w" indica che si vuole aprire il file pippo.txt in modalità scrittura.
Le altre modalità per aprire un file hanno i seguenti simboli:
"r" -> apre il file in sola lettura;
"r+" -> apre il file in lettura ed in scrittura;
"w" -> apre il file in sola scrittura;
"w+" -> apre il file in lettura e scrittura;
"a" -> apre il file in sola scrittura e inserisce il puntatore alla fine del file ("w" lo inserisce all'inizio)
"a+" -> apre il file in lettura e scrittura inserendo il puntatore alla fine del file;
Dopo aver aperto il file ci scriviamo i dati dentro. Supponiamo di volere scrivere nel file la stringa "messaggio di prova":
$stringa="messaggio di prova";
fwrite($scrivi_file,$stringa);
fclose($scrivi_file);
L'istruzione fwrite ha il compito di scrivere nel file la stringa $stringa. Egli prende come primo argomento il puntatore di apertura del file $scrivi_file che avevamo visto in precendenza e come secondo argomento la stringa che vogliamo memorizzare nel file. Una volta memorizzata la stringa nel file possiamo terminare l'interazione con il file con l'istruzione fclose che prende come argomento il puntatore di apertura del file. Nella pagina successiva andremo a vedere come leggere sul file la stringa che abbiamo memorizzato.
Lettura su file:
Ora andiamo a leggere nel file pippo.txt la stringa di testo che ci abbiamo memorizzato. Le istruzioni da digitare seguono la stessa logica delle istruzioni pr scrivere su file. Per prima cosa voglio aprire il file:
$leggi_file=fopen("pippo.txt","r");
Il puntatore di apertura del file l'abbiamo chiamato questa volta $leggi_file. Al puntatore gli è associata l'istruzione fopen che abbiamo già incontrato nella scrittura su file. Ora andiamo a leggere ciò che è contentuto nel file.
$dim_file=filesize("pippo.txt");
$contenuto=fread($leggi_file,$dim_file);
fclose($leggi_file);
L'istruzione fread che legge il contenuto del file vuole come primo argomento il puntatore di apertura del file e come secondo argomento la quantità di dati (in bytes) che si vuol leggere. Supponiamo di voler leggere tutto il contenuto del file, perciò utilizziamo l'istruzione filesize che prende come argomento il file di cui si vuole sapere le dimensioni (in bytes) e assegniamo questo valore alla variabile $dim_file.
Il contenuto letto dall'istruzione fread lo memorizziamo nella variabile $contenuto, quindi chiudiamo l'interazione con il file con l'istruzione fclose già vista in precedenza per la scrittura. Abbiamo finito con le operazioni di scrittura e lettura su file. Se ora volete per esempio stampare su schermo ciò che era contenuto nel file scrivete l'istruzione:
echo $contenuto;
Vi apparirà su schermo la scritta 'Messaggio di prova' che avevate memorizzato su file. Nella pagina successiva troverete il riepilogo di tutto ciò detto finora.
Riepilogo:
Riepilogando tutto ciò detto troverete qui sotto il codice per scrivere e leggere su file. Vi ricordo che i simboli // in php introducono un commento.
// Stringa da scrivere su file
$stringa="Messaggio di prova";
// Scrittura del file
$scrivi_file=fopen("pippo.txt","w");
fwrite($scrivi_file,$stringa);
fclose($scrivi_file);
// Lettura del file
$leggi_file=fopen("pippo.txt","r");
$dim_file=filesize("pippo.txt");
$contenuto=fread($leggi_file,$dim_file);
fclose($leggi_file);
//Stampa su schermo del contenuto del file
echo $contenuto;