La gestione completa di un filesequenziale con i vettori in PHP   ricerca, inserimento, modifica,      cancellazione di un...
Lettura dei record di un file        sequenziale       Vediamo cosa accade
Lettura di un record1   Apertura del file (il puntatore si posiziona sul    primo record)                                 ...
Lettura del record successivo                  2         Lettura del record corrente         (quello indicato dal         ...
Lettura del record successivo
Lettura del record successivo
Lettura del record successivo
Lettura del record successivo
Lettura del record successivoEnd of file (eof)
I vettori con PHPPer creare un vettore si può usare la funzione array().Ipotizziamo di creare un vettore con i dati anagra...
I vettori con PHPPartendo dallesempio precedente si capisce chei vettori sono anche unottima struttura permemorizzare i re...
lettura di un file sequenziale                    con PHPIn questo esempio si usa un vettore creato "al volo" perospitare ...
Non esiste alcun modo per...    ...sovrascivere (modificando il contenuto di    uno o piu campi) un record presente in un ...
Tantomeno Non esiste alcun modo per...                                    ...cancellare un record presente                ...
Modifica e cancellazione di un            recordQueste operazioni si possono fare in memoria usando vettori (detti       a...
Con il sistema visto fino ad adessoil vettore $vRecord, ad ogni nuova   lettura perde il contenuto della         lettura p...
Record dopo record, lettura dopo           lettura...                 … il vettore di vettori si riempie degli stessi     ...
Così facendo otteniamo un     vettore di 6 elementi ciascuno dei quali contieneun vettore (che rappresenta il   record con...
[...]$nomefile = "clienti.txt";                           // assegno nome del file$f = fopen($nomefile, "r");             ...
Per visualizzare i dati presenti in un   vettore si può usare un ciclo for[...]   // $n rappresenta il numero di elementi ...
Per modificare un campo diun record di cui conosco la posizione o il valore di un  campo si può sempre  utilizzare un cicl...
Per sovrascrivere un filesequenziale leggendo da un  vettore di vettori si puosempre usare un ciclo for...
Per sovrascrivere un file sequenziale leggendo da un vettore di vettori (scatola) esaltare un record che si vuole   elimin...
Upcoming SlideShare
Loading in …5
×

PHP: gestione file sequenziale

2,135 views
1,986 views

Published on

Inserimento, ricerca, visualizzazione, modifica ed eliminazione di un record di un file sequenziale.

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,135
On SlideShare
0
From Embeds
0
Number of Embeds
158
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

PHP: gestione file sequenziale

  1. 1. La gestione completa di un filesequenziale con i vettori in PHP ricerca, inserimento, modifica, cancellazione di un recordOvvero, spiegare i vettori in funzione della gestione di un file sequenziale
  2. 2. Lettura dei record di un file sequenziale Vediamo cosa accade
  3. 3. Lettura di un record1 Apertura del file (il puntatore si posiziona sul primo record) 2 Lettura del record corrente (quello indicato dal puntatore) e trasferimento in memoria (variabile alfanumerica) 3 Spostamento nel vettore Adesso i dati sono pronti 4 per elaborazioni (somme/totalizzazioni) o output, dipendentemente dal problema assegnato
  4. 4. Lettura del record successivo 2 Lettura del record corrente (quello indicato dal puntatore) e trasferimento in memoria (variabile alfanumerica) 3 Spostamento nel vettore Adesso i dati sono pronti 4 per elaborazioni (somme/totalizzazioni) o output, dipendentemente dal problema assegnato
  5. 5. Lettura del record successivo
  6. 6. Lettura del record successivo
  7. 7. Lettura del record successivo
  8. 8. Lettura del record successivo
  9. 9. Lettura del record successivoEnd of file (eof)
  10. 10. I vettori con PHPPer creare un vettore si può usare la funzione array().Ipotizziamo di creare un vettore con i dati anagrafici di una persona(codice, cognome, nome, età,luogo di nascita).[...]$vRecord = array(1,"Floris","Stefano", 42, "Grevein Chianti");[...]per visualizzare il contenuto del vettore potrò usare il comandoecho[...]echo $vrecord[1];[...]
  11. 11. I vettori con PHPPartendo dallesempio precedente si capisce chei vettori sono anche unottima struttura permemorizzare i record.Il vettore è un tipo di variabile che può essereusata facilmente per conservare i dati di unrecord.Per esempio, si può creare un vettore con ilnumero di elementi corrispondente al numerodei campi del record da ospitare.
  12. 12. lettura di un file sequenziale con PHPIn questo esempio si usa un vettore creato "al volo" perospitare i record letti da un file (in questo caso vRecord):[...]$nomefile = "clienti.txt"; // assegno nome del file$f = fopen($nomefile, "r"); // apro il file in letturaif ($f) { $record = fgets($f); // leggo primo record while (!eof($f)) { // ciclo fino a fine file $vRecord = explode("t",$record); // sposto i campi nel vettore $record = fgets($f); // Leggo record successivo }}[...]Manca però ancora un passaggio... infatti in questomodo ad ogni lettura si scrive sopra vRecord perdendo ilcontenuto della lettura precedente.
  13. 13. Non esiste alcun modo per... ...sovrascivere (modificando il contenuto di uno o piu campi) un record presente in un file sequenziale anche se si conosce la posizione 1 Apertura file (puntatore Supponiamo di voler sul primo record) “ringiovanire” Floris Stefano. 2 Lettura del record corrente (quello indicato dal puntatore) e trasferimento in memoria (variabile alfanumerica) 3 Spostamento 25 nel vettore 4 $vRecord[4] ← 25
  14. 14. Tantomeno Non esiste alcun modo per... ...cancellare un record presente in un file sequenziale anche se si Apertura file (puntatore conosce la posizione1 sul primo record) 2 Lettura del record corrente (quello indicato dal puntatore) e trasferimento in memoria (variabile alfanumerica) 3 Spostamento nel vettore Scelgo di cancellare il 4 record con codice 4
  15. 15. Modifica e cancellazione di un recordQueste operazioni si possono fare in memoria usando vettori (detti array) e/o matrici. Vorrebbe dire... collocare inmemoria una struttura dati simile a quella del file ma piu flessibile? Esatto!
  16. 16. Con il sistema visto fino ad adessoil vettore $vRecord, ad ogni nuova lettura perde il contenuto della lettura precedente... … in quanto si sovrascrivono i dati con quelli del record appena letto. Risolviamo salvando i dati in una struttura piu complessa: un vettore di vettori!. 2 Lettura del record corrente (quello indicato dal puntatore) e trasferimento in memoria (variabile alfanumerica) 3 Spostamento nel vettore 4
  17. 17. Record dopo record, lettura dopo lettura... … il vettore di vettori si riempie degli stessi dati contenuti nel file sequenziale. 2 Lettura del record corrente (quello indicato dal puntatore) e trasferimento in memoria (variabile alfanumerica) 3 Spostamento nel vettore 4
  18. 18. Così facendo otteniamo un vettore di 6 elementi ciascuno dei quali contieneun vettore (che rappresenta il record con i suoi campi)
  19. 19. [...]$nomefile = "clienti.txt"; // assegno nome del file$f = fopen($nomefile, "r"); // apro il file in lettura$n=0; // uso un contatore di recif ($f) { $record = fgets($f); // leggo primo record $n = $n + 1; // incremento ad ogni lettura while (!eof($f)) { // ciclo fino a fine file $vRecord = explode("t",$record); // sposto i campi nel vettore $vScatola[$n] = $vRecord; // salvo il record $record = fgets($f); // Leggo record successivo }}[...] Le modifiche necessarie ad un ciclo di lettura per salvare i record in un vettore (qui chiamato scatola) sono minime.
  20. 20. Per visualizzare i dati presenti in un vettore si può usare un ciclo for[...] // $n rappresenta il numero di elementi in $vScatola For ($x==1;$x<0$n;$x++) { // ciclo fino a fine vettore Echo “<TR><TD>”; Echo “$vScatola[$x][0]”; // visual. campo 0 del rec. $x esimo Echo “<TD><TD>”; Echo “$vScatola[$x][1]”; // visual. campo 1 del rec. $x esimo Echo “<TD><TD>”; Echo “$vScatola[$x][2]”; // visual. campo 2 del rec. $x esimo Echo “<TD><TD>”; Echo “$vScatola[$x][3]”; // visual. campo 3 del rec. $x esimo Echo “<TD><TR>”; }}[...]
  21. 21. Per modificare un campo diun record di cui conosco la posizione o il valore di un campo si può sempre utilizzare un ciclo for...
  22. 22. Per sovrascrivere un filesequenziale leggendo da un vettore di vettori si puosempre usare un ciclo for...
  23. 23. Per sovrascrivere un file sequenziale leggendo da un vettore di vettori (scatola) esaltare un record che si vuole eliminare si puo sempre usare un ciclo for... http://www.allwebfree.it/articolo_php_alternativa_database.php http://www.allwebfree.it/php_txt.php http://win.itispanetti.it/panettistyle/dispense/I%20file%20in%20PHP.pdf

×