1
Ricerca semplice in un archivio sequenziale
(con html e php)
Stefano FlorisVersione ottobre 2011a
Pubblicato su www.troppocurioso.altervista.org
2
Ricerca semplice in un archivio sequenziale
(con html e php)
Preso in input un valore da cercare per esempio cognome=”Floris”,
si intende per ricerca semplice, lo scorrimento dell'archivio
e la visualizzazione di tutti i record il cui campo cognome equivale a “Floris”.
Per vedere una copia del testo della licenza visita il sito http://www.creativecommons.it/Licenze
Stefano Floris, 2011www.troppocurioso.altervista.org
Questa opera è sotto licenza creativa (di tipo copyleft)
Attribuzione-Non commerciale-Condividi allo stesso modo Generico.
4
Ricerca semplice di dati in un archivio sequenziale
Noi ci occuperemo delle fasi evidenziate
● Analisi del problema (testo)● Progettazione interfaccia● Progettazione programma (diagr. a blocchi)● Sviluppo● Test● Consegna
5
Prendiamo in esame due casi differenti e alternativi di possibili metodi di ricerca di un dato
in archivio:
1) Input del valore da cercare: una variabile
2) Input del valore da cercare e input del campo sul quale cercare: due variabili
Ricerca
6
Struttura del record
Cognome Nome Classe Sez Indirizzo Titolo Argomento
Gruppo/Individ.
Floris Stefano 4 C Mercurio Energia: la fonte rinnovabile migliore è il risparmio
Energia G
Nomi campi
Esempio di dati
7
Fasi di sviluppo del programma
● Analisi del problema● Progettazione interfaccia● Progettazione programma● Sviluppo● Test● Consegna
8
1) Input del valore da cercare: una variabile
Ricerca
9
1) Input del valore da cercare: una variabile
Progettazione interfaccia di ricerca
Scegli la ricerca:- Per Cognome- Per Classe- Per Sezione- Per Titolo- Per Argomento……indietro
ricerca.htmRicerca per Cognome
Digita il valore da cercare
indietro
Conferma Annulla
ric_cogn.htm
ris_cogn.php
RICEVE: noOUTPUT: noINPUT: ric_cognELABORA:no
INVIA a ris_cogn.php: ric_cogn
RICEVE: ris_cognOUTPUT: dati trovatiINPUT: noELABORA:scorre archivio e verifica il campo cognome
INVIA : no
Risultati ricerca per Cognome[XXXXXXX]
indietro
NOTE: a) metodo piu' semplice (vedremo perchè)b) è necessario realizzare due pagine di sorgente per ciascun campo ricerca (input, risultati)
Ecc., ecc., ecc.
NOTE su questo progetto:1) È' il metodo piu' semplice 2) E' necessario realizzare due pagine di sorgente per ciascun campo ricerca (input, risultati)
10
2) Input del valore da cercare e input del campo sul quale cercare: due variabili
Ricerca
11
2) Input del valore da cercare e input del campo sul quale cercare: due variabili
Progettazione interfaccia di ricerca
Scegli la ricerca:o Per Cognomeo Per Classeo Per Sezioneo Per Titoloo Per Argomento
indietro
ricerca.htm
visualizza.php
RICEVE: noOUTPUT: noINPUT: ric_campo, ric_valoreELABORA:no
INVIA a ric_cogn.php: ric_campo, ric_valore RICEVE: ric_campo,
ric_valoreOUTPUT: dati trovatiINPUT: noELABORA:scorre archivio e verifica il campo e il valore
INVIA : no
Risultati ricerca per [ric_campo][ric_valore]
indietro
Conferma Annulla
NOTE: 1) E' il metodo piu' complesso 2) E' sufficiente realizzare due pagine di sorgente per tutte le ricerche
12
Fasi di sviluppo del programma
● Analisi del problema (testo)● Progettazione interfaccia● Progettazione programma (diagr. a blocchi)● Sviluppo● Test● Consegna
13
Struttura del record
Cognome Nome Classe Sez Indirizzo Titolo Argomento Gruppo/Individ.
Floris Stefano 4 C Mercurio Energia: la fonte rinnovabile migliore è il risparmio
Energia G
Nomi campi
Esempio di dati
0 1 2 3 4 5 6 7
Tenere presente la numerazione dei campi. Dopo la lettura, si trasferisce il record in un vettore.La posizione di ciascun campo nel vettore si individua partendo da zero.
14
1) Input del valore da cercare: una variabile
Sviluppo
15
1) Input del valore da cercare: una variabile
Sviluppo ricerca
ris_cogn.php
RICEVE: ric_cognOUTPUT: dati trovatiINPUT: noELABORA:scorre archivio e verifica il campo cognome
INVIA : no
Risultati ricerca per Cognome[ric_cogn]
indietro
$record = fGets($archivio);
$vrecord = explode($record);While ! Eof($archivio) {
If $vrecord(1) = ric_cogn { Echo …;
Echo … ; }
// Record successivo $record = fGets($archivio); $vrecord = explode($record);}
Nel nostro esempio la ricerca di un valore in un file sequenziale si può chiamare visualizzazione condizionata dei dati letti. I dati nel file sequenziale vengono comunque letti tutti ma la visualizzazione è condizionata dalla corrispondenza del valore del campo letto (record corrente, posizione 1=cognome) con il valore cercato.
16
2) Input del valore da cercare e input del campo sul quale cercare: due variabili
Sviluppo
17
2) Input del valore da cercare e input del campo sul quale cercare: due variabili
Sviluppo ricerca
visualizza.php
RICEVE: ric_campo, ric_valoreOUTPUT: dati trovatiINPUT: noELABORA:scorre archivio e verifica il campo e il valore
INVIA : no
Risultati ricerca per [ric_campo][ric_valore]
indietro
$record = fGets($archivio);
$vrecord = explode($record);While ! Eof($archivio) {
If $vrecord(?) = ric_valore { Echo …;
Echo … ; }
// Record successivo $record = fGets($archivio); $vrecord = explode($record);}
18
FineFinesegue approfondimento su ● ricerca su piu' campi (esempio Cognone + Nome)● ricerca con risultato di un record o piu' record