2. BOATSCH1
L'html emesso dal programma
BOATSCH0
contiene un
form
con il bottone
Quando l'utente preme quel bottone, viene invocato il programma
BOATSCH1
(in quanto è citato nella
action del
form)
Questa è la stringa di input che viene resa disponibile al programma:
lng=***&bckgnd=***&boatnbr=0&type=***&maker=***&units=*** &minlen=***&maxlen=***&minpri=***&maxpri=***&city=***&state=*** &country=***&lstbrd=*** |
Flusso del programma
- Riceve la stringa di input (procedura zhbGetInput)
- Fa il parsing della stringa di input nelle variabili del programma (procedura zhbGetVar)
- Carica il membro esterno di html
BOATSCH1
in cgidev2/DEMOHTMLIT (procedura GetHtml)
- Riceve la variabile di ambiente SERVER_PROTOCOL
per esibirla più tardi (procedura getEnv)
- Imposta le variabili di output html
- per i campi di input hidden del <FORM>
relativi al linguaggio nazionale ed al colore di sfondo
- per i parametri della tag html <BODY >
- per i parametri di ricerca specificati dall'utente
e scrive la sezione html top (parte iniziale dello script di html)
- Se è la prima volta che riceve il controllo,
effettau l'override ed apre il file database
cgidev2/boatsale
contenente il catalogo delle barche.
Si noti che questo file non verrà mai più chiuso,
in modo da non dover rieffettuare la apertura
nelle chiamate successive.
- Posiziona il file subito dopo l'ultima barca
precedentemente elencata
(a questo fine viene utilizzato il campo di
input hidden
boatnbr;
questo campo di input contiene 0 quando il programma
viene invocato dall'html generato dal programma
BOATSCH0;
quando invece il programma viene invocato
premendo il bottone
Visualizzane altre nnn,
questo campo di input hidden contiene
il numero di matricola dell'ultima barca elencata)
- Legge il file database per trovare quante barche
soddisfano ai criteri di ricerca
Scrive la sezione di output howmany
e, se le barche trovate sono più di 30,
scrive anche la sezione di output 30more
- Scrive la sezione di output tablestr
per definire l'inizio della tabella (elenco)
- Si riposiziona sulla barca di partenza
e rilegge sino a trovare un massimo di 30 barche
che corrispondano ai criteri di ricerca.
Per ciascun record imposta le variabili di output
e scrive la sezione tablerow in modo tale
da visualizzare la lunghezza, la marca, il tipo, il nome,
l'anno di fabbricazione, il costo della barca
e la città in cui essa è visibile.
Ma, la linea di tabella non finisce qui.
Essa contiene anche informazioni atte ad attivare
il programma
BOATSCH2,
che visualizza la foto della barca, i suoi dati
di catalogo ed una descrizione narrativa.
- Contiene un collegamento al programma
BOATSCH2,
insieme con una stringa che consente al programma
di visualizzare quella sola barca.
Il collegamento, prima della risoluzione delle
variabili, contiene
<a href="/cgidev2p/boatsch2.pgm?serno=/%bnbr%/">
dove
/%bnbr%/
sarà sostituito dal numero di matricola della barca.
- Contiene anche il checkbox
<input type="checkbox" name="serno" value="/%bnbr%/">
Quando l'utente preme il bottone
Fammi vedere queste barche
il programma
BOATSCH2
(citatao nella
action
del form
<form >)
viene invocato e riceve una stringa
contenente sia i campi Hidden
(come la lingua nazionale e il colore di sfondo)
sai i valori trasmessi dai checkbok selezionati.
A titolo di esempio, la stringa di input
potrebbe essere
lng=&bckgnd=white&serno=0008745&serno=0009784&serno=0012509
nel caso in cui l'utente avesse scelto tre barche.
- Quando l'elenco delle barche è finito,
scrive la sezione
tablend che chiude la tabella
- Se la tabella contiene almeno una riga,
scrive la sezione
foundsome che contiene il bottone
Fammi vedere queste barche.
Si noti che l'azione di questo bottone
(la chiamata al programma
BOATSCH2)
è definita nel parametro
action
del
<form >,
più sopra nell'html.
- Se sono state trovate più di 30 barche
che soddisfano ai requisiti,
scrive la sezione
showmore,
la quale consente di ricollegarsi al programma
BOATSCH1
passandogli gli stessi criteri di ricerca, ma questa volta
anche la matricola della barca elencata per ultima.
- Alla fine, il programma
- scrive la sezione html endhtml
(dopo aver impostato le relative variabili, compresa
quella che visualizza il tempo di risposta del servente)
- spedisce il buffer di output (scrivendo la pseudo-sezione
*fini)
- ritorna lasciando in off l'indicatore LR,
in modo tale che sia utilizzata questa stessa copia di programma alla prossima chiamata, ciò che si traduce in prestazioni ottimali.
|