SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
La gestione completa di un file
sequenziale con i vettori in PHP

   ricerca, inserimento, modifica,
      cancellazione di un record

Ovvero, spiegare i vettori in funzione della gestione di un file sequenziale
Lettura dei record di un file
        sequenziale



       Vediamo cosa accade
Lettura di un record
1   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
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
Lettura del record successivo
Lettura del record successivo
Lettura del record successivo
Lettura del record successivo
Lettura del record successivo




End of file (eof)
I vettori con PHP
Per 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, "Greve
in Chianti");
[...]

per visualizzare il contenuto del vettore potrò usare il comando
echo

[...]
echo $vrecord[1];
[...]
I vettori con PHP


Partendo dall'esempio precedente si capisce che
i vettori sono anche un'ottima struttura per
memorizzare i record.

Il vettore è un tipo di variabile che può essere
usata facilmente per conservare i dati di un
record.

Per esempio, si può creare un vettore con il
numero di elementi corrispondente al numero
dei campi del record da ospitare.
lettura di un file sequenziale
                    con PHP
In questo esempio si usa un vettore creato "al volo" per
ospitare 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 lettura
if ($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 questo
modo ad ogni lettura si scrive sopra vRecord perdendo il
contenuto della lettura precedente.
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
Tantomeno Non esiste alcun modo per...


                                    ...cancellare un record presente
                                   in un file sequenziale anche se si
    Apertura file (puntatore              conosce la posizione
1
    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
Modifica e cancellazione di un
            record
Queste operazioni si possono fare
 in memoria usando vettori (detti
       array) e/o matrici.



   Vorrebbe dire... collocare in
memoria una struttura dati simile a
 quella del file ma piu' flessibile?




                                       Esatto!
Con il sistema visto fino ad adesso
il 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
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
Cos'ì facendo otteniamo un
     vettore di 6 elementi
 ciascuno dei quali contiene
un vettore (che rappresenta il
   record con i suoi campi)
[...]
$nomefile = "clienti.txt";                           // assegno nome del file
$f = fopen($nomefile, "r");                          // apro il file in lettura
$n=0;                                                // uso un contatore di rec
if ($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.
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>”;
   }
}
[...]
Per modificare un campo di
un record di cui conosco la
 posizione o il valore di un
  campo si può sempre
  utilizzare un ciclo for...
Per sovrascrivere un file
sequenziale leggendo da un
  vettore di vettori si puo'
sempre usare un ciclo for...
Per sovrascrivere un file
 sequenziale leggendo da un
 vettore di vettori (scatola) e
saltare 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

Weitere ähnliche Inhalte

Mehr von High Secondary School

Php e data base introduzione a mysql
Php e data base  introduzione a mysqlPhp e data base  introduzione a mysql
Php e data base introduzione a mysqlHigh Secondary School
 
PHP, ricerca dati_in_file_sequenziali
PHP, ricerca dati_in_file_sequenzialiPHP, ricerca dati_in_file_sequenziali
PHP, ricerca dati_in_file_sequenzialiHigh Secondary School
 
PHP Introduzione a javascript e validazione
PHP Introduzione a javascript e validazionePHP Introduzione a javascript e validazione
PHP Introduzione a javascript e validazioneHigh Secondary School
 
PHP: programmi gestionali, introduzione
PHP: programmi gestionali, introduzionePHP: programmi gestionali, introduzione
PHP: programmi gestionali, introduzioneHigh Secondary School
 
Una bottega del Commercio Equo & Solidale
Una bottega del Commercio Equo & SolidaleUna bottega del Commercio Equo & Solidale
Una bottega del Commercio Equo & SolidaleHigh Secondary School
 
Comunità Scolastiche Sostenibili 2007
Comunità Scolastiche Sostenibili 2007Comunità Scolastiche Sostenibili 2007
Comunità Scolastiche Sostenibili 2007High Secondary School
 
Visual Basic, modulo e sottoprocedure
Visual Basic, modulo e sottoprocedureVisual Basic, modulo e sottoprocedure
Visual Basic, modulo e sottoprocedureHigh Secondary School
 
Programmare In Visual Basic, prima lezione
Programmare In Visual Basic, prima lezioneProgrammare In Visual Basic, prima lezione
Programmare In Visual Basic, prima lezioneHigh Secondary School
 

Mehr von High Secondary School (20)

Php e data base introduzione a mysql
Php e data base  introduzione a mysqlPhp e data base  introduzione a mysql
Php e data base introduzione a mysql
 
PHP, ricerca dati_in_file_sequenziali
PHP, ricerca dati_in_file_sequenzialiPHP, ricerca dati_in_file_sequenziali
PHP, ricerca dati_in_file_sequenziali
 
PHP Introduzione a javascript e validazione
PHP Introduzione a javascript e validazionePHP Introduzione a javascript e validazione
PHP Introduzione a javascript e validazione
 
Da html in_poi, verso PHP
Da html in_poi, verso PHPDa html in_poi, verso PHP
Da html in_poi, verso PHP
 
PHP: programmi gestionali, introduzione
PHP: programmi gestionali, introduzionePHP: programmi gestionali, introduzione
PHP: programmi gestionali, introduzione
 
Visual basic: odbc su MySql
Visual basic: odbc su MySqlVisual basic: odbc su MySql
Visual basic: odbc su MySql
 
Dal cacao al cioccolato
Dal cacao al cioccolatoDal cacao al cioccolato
Dal cacao al cioccolato
 
Una bottega del Commercio Equo & Solidale
Una bottega del Commercio Equo & SolidaleUna bottega del Commercio Equo & Solidale
Una bottega del Commercio Equo & Solidale
 
Comunità Scolastiche Sostenibili 2007
Comunità Scolastiche Sostenibili 2007Comunità Scolastiche Sostenibili 2007
Comunità Scolastiche Sostenibili 2007
 
Visual Basic, Equazioni Sec Grado
Visual Basic, Equazioni Sec GradoVisual Basic, Equazioni Sec Grado
Visual Basic, Equazioni Sec Grado
 
Visual Basic, modulo e sottoprocedure
Visual Basic, modulo e sottoprocedureVisual Basic, modulo e sottoprocedure
Visual Basic, modulo e sottoprocedure
 
VB Cicli Lavoro Repeat
VB  Cicli  Lavoro  RepeatVB  Cicli  Lavoro  Repeat
VB Cicli Lavoro Repeat
 
Blog Riferimenti Risorse (4)
Blog Riferimenti Risorse (4)Blog Riferimenti Risorse (4)
Blog Riferimenti Risorse (4)
 
Blog Cosa E'?
Blog Cosa E'?Blog Cosa E'?
Blog Cosa E'?
 
Blog Creazione
Blog CreazioneBlog Creazione
Blog Creazione
 
Blog Manutenzione
Blog ManutenzioneBlog Manutenzione
Blog Manutenzione
 
Contenuti WEB creati dagli Utenti
Contenuti WEB creati dagli UtentiContenuti WEB creati dagli Utenti
Contenuti WEB creati dagli Utenti
 
Programmare In Visual Basic, prima lezione
Programmare In Visual Basic, prima lezioneProgrammare In Visual Basic, prima lezione
Programmare In Visual Basic, prima lezione
 
Funzione se Incapsulata
Funzione se IncapsulataFunzione se Incapsulata
Funzione se Incapsulata
 
Supermercato
SupermercatoSupermercato
Supermercato
 

Kürzlich hochgeladen

Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxOrianaOcchino
 
lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldivaleriodinoia35
 
Corso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativoCorso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativovaleriodinoia35
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiorevaleriodinoia35
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaStefano Lariccia
 
Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaPierLuigi Albini
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaStefano Lariccia
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaRafael Figueredo
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieVincenzoPantalena1
 

Kürzlich hochgeladen (9)

Storia dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptxStoria dell’Inghilterra nell’Età Moderna.pptx
Storia dell’Inghilterra nell’Età Moderna.pptx
 
lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldi
 
Corso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativoCorso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativo
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiore
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
 
Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza cultura
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medie
 

PHP: gestione file sequenziale

  • 1. La gestione completa di un file sequenziale con i vettori in PHP ricerca, inserimento, modifica, cancellazione di un record Ovvero, spiegare i vettori in funzione della gestione di un file sequenziale
  • 2. Lettura dei record di un file sequenziale Vediamo cosa accade
  • 3. Lettura di un record 1 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. 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. Lettura del record successivo
  • 6. Lettura del record successivo
  • 7. Lettura del record successivo
  • 8. Lettura del record successivo
  • 9. Lettura del record successivo End of file (eof)
  • 10. I vettori con PHP Per 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, "Greve in Chianti"); [...] per visualizzare il contenuto del vettore potrò usare il comando echo [...] echo $vrecord[1]; [...]
  • 11. I vettori con PHP Partendo dall'esempio precedente si capisce che i vettori sono anche un'ottima struttura per memorizzare i record. Il vettore è un tipo di variabile che può essere usata facilmente per conservare i dati di un record. Per esempio, si può creare un vettore con il numero di elementi corrispondente al numero dei campi del record da ospitare.
  • 12. lettura di un file sequenziale con PHP In questo esempio si usa un vettore creato "al volo" per ospitare 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 lettura if ($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 questo modo ad ogni lettura si scrive sopra vRecord perdendo il contenuto della lettura precedente.
  • 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. Tantomeno Non esiste alcun modo per... ...cancellare un record presente in un file sequenziale anche se si Apertura file (puntatore conosce la posizione 1 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. Modifica e cancellazione di un record Queste operazioni si possono fare in memoria usando vettori (detti array) e/o matrici. Vorrebbe dire... collocare in memoria una struttura dati simile a quella del file ma piu' flessibile? Esatto!
  • 16. Con il sistema visto fino ad adesso il 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. 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. Cos'ì facendo otteniamo un vettore di 6 elementi ciascuno dei quali contiene un vettore (che rappresenta il record con i suoi campi)
  • 19. [...] $nomefile = "clienti.txt"; // assegno nome del file $f = fopen($nomefile, "r"); // apro il file in lettura $n=0; // uso un contatore di rec if ($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. 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. Per modificare un campo di un record di cui conosco la posizione o il valore di un campo si può sempre utilizzare un ciclo for...
  • 22. Per sovrascrivere un file sequenziale leggendo da un vettore di vettori si puo' sempre usare un ciclo for...
  • 23. Per sovrascrivere un file sequenziale leggendo da un vettore di vettori (scatola) e saltare 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