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;