Presentazione 2.2 Web Form Comunicazione integrata in rete| Prof. Luca A. Ludovico Introduzione • I moduli (form) si utilizzano tipicamente per raccogliere informazioni dall’utente finale. – L’interfaccia utente è molto rudimentale, ma può essere migliorata con interventi grafici e fogli di stile • Un form può contenere campi di testo, caselle di scelta, radio button, check box ecc. • L’implementazione di un form contempla 3 passi: progettare l’interfaccia utente, implementare il processing lato server e configurare tali due oggetti per comunicare tra loro. In questa lezione si vedrà come impostare i form in HTML, ma non come i dati provenienti dai form possano essere processati da parte del server. Comunicazione integrata in rete Prof. Luca A. Ludovico Form Comunicazione integrata in rete Prof. Luca A. Ludovico Sintassi di base • <form> è uno dei tag HTML • Sintassi: <form parametri> ... elementi del form ... </form> • Oltre a vari elementi (campi di testo, caselle di scelta, ecc.), di solito il modulo contiene un pulsante Submit che invia le informazioni al server • I parametri servono a specificare come inviare i dati al server – come illustrato nel seguito, esistono due modalità di invio Comunicazione integrata in rete Prof. Luca A. Ludovico Il primo form • Ogni form inizia con un elemento form al cui interno si posizionano i controlli. La maggior parte dei controlli sono elementi input, che di default implementano un campo testo su riga singola. • Per etichettare un controllo si usa l’elemento label, al cui interno si posiziona tanto l’etichetta testuale quanto il controllo stesso. • Tipicamente ogni singolo controllo viene posizionato in un paragrafo a sè stante (elemento p), ma ovviamente non è obbligatorio. Comunicazione integrata in rete Prof. Luca A. Ludovico Ordinazione della pizza (1 – campo testo) <form> <p> <label>Nome del cliente:<input></label> </p> </form> Comunicazione integrata in rete Prof. Luca A. Ludovico Input: campi testo (text field) • Nell’esempio precedente, abbiamo usato input senza specificare il tipo. Equivalente a scrivere: <input type= "text"> • I campi testo (text field) consentono di inserire testo in un riquadro su un’unica riga. La dimensione di default è 20 caratteri. • Il contenuto può essere preimpostato usando l’attributo value • E’ possibile variarne alcuni aspetti utilizzando gli attributi (tutti opzionali) dell’elemento input. Comunicazione integrata in rete Prof. Luca A. Ludovico Alcuni attributi di contenuto ricorrenti • autocomplete: istruzioni di autocompletamento (on/off) • list: un elenco di suggerimenti, puntando a un datalist • maxlength, minlength: dimensione massima e minima per il campo in numero di caratteri • pattern: permette di specificare il formato della stringa tramite espressioni regolari Ad es. pattern="[0-9][A-Z]{3}" implica una cifra seguita da 3 maiuscole) • placeholder: segnaposto di suggerimento • disabled, readonly: sola lettura. Differenza: nel caso di readonly, si può selezionare il controllo. • required: compilazione obbligatoria • size: dimensione grafica del controllo espressa in numero di caratteri • … Comunicazione integrata in rete Prof. Luca A. Ludovico Ordinazione della pizza (2 – attributi del campo di testo) <form> <p> <label>Nome del cliente: <input type="text" size="40" maxlenght="20"> </label> </p> </form> Comunicazione integrata in rete Prof. Luca A. Ludovico Varianti dei campi testo • E’ possibile specificare il tipo di input come search anziché text. La differenza è puramente stilistica, su quei sistemi che li differenziano graficamente <input type="search"> • E’ possibile occultare la compilazione dei caratteri di un campo di testo specificando che si tratta di un campo password <input type="password"> Comunicazione integrata in rete Prof. Luca A. Ludovico Utilizzo di fieldset e legend • Fieldset serve per raggruppare da un punto di vista logico e grafico un insieme di controlli. • Spesso i browser evidenziano un fieldset disegnando una cornice attorno ai controlli inclusi. • Legend permette di specificare un nome comune per il fieldset. • I fieldset possono essere annidati a piacimento. Comunicazione integrata in rete Prof. Luca A. Ludovico Pulsanti di scelta (radio button) • I pulsanti di scelta (radio button) mostrano opzioni in mutua esclusione. Sceglierne una disabilita automaticamente le altre. • Sintassi: <input type="radio" name="nome_scelto"> • Il raggruppamento tra opzioni in mutua esclusione si basa sull’attributo name, il cui valore deve essere uguale • I pulsanti vengono creati senza selezione iniziale. Per impostarne una, si usa checked="checked" Comunicazione integrata in rete Prof. Luca A. Ludovico Ordinazione della pizza (3 – radio button) <!doctype html> <html> <form> <p><label>Nome del cliente: <input></label></p> <fieldset> <legend> Dimensioni della pizza </legend> <p><label><input type="radio" name="size"> Small </label></p> <p><label><input type="radio" name="size" checked="checked"> Medium </label></p> <p><label><input type="radio" name="size"> Large </label></p> </fieldset> </form> </html> Comunicazione integrata in rete Prof. Luca A. Ludovico Ordinazione della pizza (4 – radio button) <fieldset> <legend> Dimensioni della pizza </legend> <p><label><input type="radio" name="size"> Small </label></p> <p><label><input type="radio" name="size"> Medium </label></p> <p><label><input type="radio" name="size"> Large </label></p> <p> </p> <p> <label><input type="radio" name="border"> Bordo ripieno </label> </p> <p> <label><input type="radio" name="border"> Bordo sottile </label> </p> </fieldset> Comunicazione integrata in rete Prof. Luca A. Ludovico Caselle di controllo (checkbox) • Le caselle di controllo (checkbox) mostrano opzioni con due stati: selezionato e non selezionato. La selezione ha l’apparenza di un segno di spunta all’interno di un quadrato. • Sintassi: <input type="checkbox"> • Le caselle vengono create senza selezione iniziale. Per impostarla, si usa checked="checked" Comunicazione integrata in rete Prof. Luca A. Ludovico Ordinazione della pizza (5 – checkbox) … <fieldset> <legend> Extra </legend> <p>label><input type="checkbox"> Pancetta </label></p> <p>label><input type="checkbox"> Super-mozzarella </label></p> <p>label><input type="checkbox"> Cipolle </label></p> <p>label><input type="checkbox"> Funghi </label></p> </fieldset> … Comunicazione integrata in rete Prof. Luca A. Ludovico Aree di testo (textarea) • Le aree di testo (textarea) consentono di scrivere testi su più righe. • Sintassi: <textarea>…</textarea> – Attenzione: non si tratta di un elemento input con type="textarea" • Come per le caselle di testo, è possibile impostare una serie di parametri per modificare l’aspetto dell’area di testo. A differenza di queste, l’eventuale valore predefinito non va inserito nell’attributo value, bensì come contenuto dell’elemento <textarea>Testo preimpostato</textarea> Comunicazione integrata in rete Prof. Luca A. Ludovico Ordinazione della pizza (6 – textarea) … <p> <label>Commenti<br /> <textarea rows="5" cols="50"> Inserisci qui i tuoi commenti... </textarea> </label> </p> … Comunicazione integrata in rete Prof. Luca A. Ludovico Elenco (drop-down list) • Gli elenchi menù (drop-down list) consentono di scegliere un’opzione da un menù a tendina. • Sintassi: <select> <option>English Major</option> <option>Math Major</option> … </select> • E’ possibile preimpostare un valore attraverso l’attributo selected di option. Comunicazione integrata in rete Prof. Luca A. Ludovico Ordinazione della pizza (7 – dropdown) … <p> <label>Quartiere <select> <option>Bovisa</option> <option>Centro</option> <option selected="selected">Gallaratese</option> <option>Lorenteggio</option> </select> </label> </p> … Comunicazione integrata in rete Prof. Luca A. Ludovico Pulsanti (button) • I pulsanti sono concepiti per effettuare operazioni alla loro pressione. Esistono principalmente tre tipologie di pulsanti: 1. Pulsante submit <input type="submit" value="Invia"> 2. Pulsante reset <input type="reset" value="Cancella"> 3. Pulsante gen. <input type="button" value="Cliccami"> • Le prime due categorie corrispondono ad azioni standard sul modulo (invio dei dati al server e ripristino della compilazione di default). La terza categoria deve essere legata a un’azione Javascript per avere un significato operativo. Comunicazione integrata in rete Prof. Luca A. Ludovico Ordinazione della pizza (8 – aggiunta dei pulsanti e action) <form action= "altrapagina.php" method= "post"> … <p> <input type="submit" value="Invia"> <input type="reset" value="Cancella"> </p> </form> Comunicazione integrata in rete Prof. Luca A. Ludovico Altri tipi di input (input type=…) • Hidden (type=hidden) • Telephone (type=tel), URL (type=url), E-mail (type=email) • Date and Time state (type=datetime), Date state (type=date), Month state (type=month), Week state (type=week) • Time state (type=time), Local Date and Time state (type=datetimelocal) • Number (type=number) • Range (type=range) • Color (type=color) • File Upload (type=file) • Esempio dell’ordinazione: <p><label>Telefono: <input type=tel></label></p> <p><label>E-mail: <input type=email></label></p> <p><label>Orario di consegna: <input type=time min="11:00" max="21:00" step="900"></label></p> Comunicazione integrata in rete Prof. Luca A. Ludovico Comunicazione con il server Passaggio di valori al server • Ogni form può (deve?) passare valori a una pagina sul server che li raccoglie per salvarli/usarli/elaborarli • Il tag form presenta due attributi fondamentali: a chi inviare i dati e come inviarli – action="nome_pagina" – method="nome_metodo" (get o post) Comunicazione integrata in rete Prof. Luca A. Ludovico GET e POST • Attraverso l’attributo method="nome_metodo", il form stabilisce come inviare i dati alla pagina destinatario. Nome_metodo può valere get o post. • Il metodo GET consiste nell’accodare i dati all’indirizzo della pagina richiesta, facendo seguire il nome della pagina da un punto interrogativo e dalle coppie nome/valore separate da &. • Se il metodo è POST, i dati vengono invece inviati in maniera da non essere direttamente visibili per l’utente, attraverso la richiesta HTTP che il browser invia al server. Comunicazione integrata in rete Prof. Luca A. Ludovico Nome dei controlli • Ogni controllo può essere associato a un nome (attributo name). Quando avviene il passaggio di valori al server, tipicamente alla pressione del pulsante Submit, vengono passate tante coppie nome=valore quanti sono gli input presenti nel form. Per quanto riguarda il valore, si veda la slide seguente. • Se method="get", il browser mostra tali coppie nella barra degli indirizzi, dopo il carattere ? e separate tra loro dal carattere &. Comunicazione integrata in rete Prof. Luca A. Ludovico Valore dei controlli • In generale, il valore assunto dal controllo è la compilazione effettuata dall’utente. – Ad esempio per le aree di testo e le caselle di testo • Alcuni controlli presentano solo valore vero/falso, come le caselle di controllo. • Alcuni controlli consentono la scelta tra valori. In questo caso, ad ogni opzione va associato esplicitamente un valore diverso tramite value="valore". – Ad esempio per i pulsanti di scelta e i menu a discesa Comunicazione integrata in rete Prof. Luca A. Ludovico