CAP. 10. FORMULARE
10.1. Noţiuni generale
Formulare: iată o noţiune de care ne lovim
tot timpul, pentru că suntem nevoiţi să completăm formulare
din momentul în care ne-am născut şi până murim.
Şi tot formularele sunt cele care fac cu
adevărat din Internet o tehnologie interactivă. Fără aceste
formulare, utilizatorul nu ar avea acces decât la anumite resurse statice,
predefinite, pe când, cu ajutorul formularelor, pot fi introduşi
anumiţi parametri care dau un caracter dinamic Internet-ului.
Dar pentru a analiza parametrii introduşi în
formulare sunt necesare anumite aplicaţii care decid cum va acţiona
serverul ca răspuns la datele primite. Codul acestor aplicaţii poate
fi scris în limbaje de programare web precum ASP, JAVA, PHP, JSP etc. care nu
fac însă subiectul acestui ghid.
Un formular poate conţine unul sau mai multe
controale de tipul: casete text (text boxes), casete de parole (password
boxes), ascunse (hidden), casete de validare (checkboxes), butoane radio (radio
buttons), buton trimitere formular (submit), buton resetare formular (reset),
buton imagine (image), liste etc., toate plasate în interiorul elementului
marcat de tag-ul <FORM>.
Atributele specifice acestui element sunt:
|
Atribut |
Valoare |
Descriere |
|
action |
URL |
Un URL ce defineşte adresa aplicaţiei
web care prelucrează datele sau o adresă de e-mail validă unde
vor fi trimise datele după apăsarea butonului Submit (Trimite). |
|
accept |
listă de conţinut |
O listă cu elemente separate de
virgulă a tipurilor de conţinut pe care serverul ce procesează
formularul le poate interpreta corect. |
|
accept-charset |
listă de caractere |
O listă cu elemente separate de
virgulă a caracterelor posibile ce constituie datele formularului.
Valoarea implicită este unknown. |
|
enctype |
mimetype |
Determină mecanismul folosit la codificarea
conţinutului formularului. |
|
method |
get post |
Get (implicit) sau post specifică ce metodă HTTP va fi folosită la
transmiterea datelor din formulat către serverul web. |
|
name |
numele formularului |
Defineşte un nume unic pentru formular,
util în cazul folosirii unor scripturi Java sau VB. |
|
target |
_blank _self _parent _top |
Specifică unde va deschis URL-ul
ţintă: Ř
_blank – într-o fereastră nouă; Ř
_self – în acelaşi cadru din care a fost
accesat; Ř
_parent – în cadrul părinte; Ř
_top - direct în fereastra browser-ului, luând
locul documentului existent. |
10.2. Proiectarea unui
formular
În procesul de proiectare de proiectare a unui
formular se porneşte de la datele pe care le doriţi să le
obţineţi. Pentru aceasta vă recomandăm următoarele:
- alegeţi controale care sunt adecvate pentru
categoria de date pe care doriţi să le obţineţi si pentru
interacţiunile pe care le furnizează;
- tag-ulţi cu claritate fiecare control, astfel
încât utilizatorul să înţeleagă funcţia acestuia;
- în măsura posibilităţilor, aliniaţi
tag-urile şi marginile din stânga ale controalelor. Structura unui
formular bine proiectat este asemănătoare cu aceea a unei pagini de
ziar, fiind compusă dintr-o serie de coloane în cadrul cărora fiecare
element vizual este aliniat cu elementele plasate deasupra, respectiv
dedesubtul său. Puteţi obţine acest tip de structura folosind
tabelele sau tag-ul <BR>;
- grupaţi controalele corelate şi
separaţi fiecare asemenea grup de celelalte grupuri prin încorporarea de
spaţii albe în structura dvs.;
- secvenţa de controale din formular trebuie
să fie asemănătoare cu ordinea în care le va manipula
utilizatorul. În caz contrar, utilizatorul va fi obligat să piardă
timp navigând de la un control la altul.
Este important să reţineţi că
acestea sunt doar îndrumări, nu reguli. Nefiind reguli, puteţi opta,
din când în când, pentru încălcarea lor. Pentru a determina dacă o
variantă de proiectare este superioară alteia, este util să
cereţi părerea unui grup de utilizatori. Dacă nici aceştia
nu vă pot fi de ajutor, încercaţi să obţineţi
asistenţă din partea unui alt programator. În cel mai rău caz,
străduiţi-vă să vă puneţi dvs. înşivă
în rolul unui utilizator al formularului. Întrebaţi-vă dacă
formularul este clar, uşor de utilizat şi eficient. În caz afirmativ,
este momentul să treceţi mai departe şi să creaţi
efectiv formularul HTML.
10.3. Crearea unui formular
Dacă procesul de proiectare este bazat pe
oportunism, procesul de creare a unui formular, pornind de la structura
proiectată, este mai direct.
Mai întâi, creaţi schiţa HTML
elementară, care va conţine controalele din formular, apoi
încorporaţi controalele în structura respectivă. În particular, un
formular HTML trebuie să includă un buton de expediere pe care utilizatorul
execută click pentru a trimite serverului datele din formular. Deoarece o
singură pagină HTML poate conţine mai multe formulare,
puteţi repeta de mai multe ori etapele intermediare ale acestui proces.
Pentru a include un formular în interiorul corpului
unei pagini HTML se foloseşte tag-ul <FORM>, care are
următoarea sintaxă:
<FORM
METHOD="metoda" ACTION="url">
Atributul METHOD
al tag-ului FORM poate lua una din
valorile GET sau POST. Pentru moment, specificaţi întotdeauna valoarea POST.
Atributul ACTION
specifică adresa URL a scriptului ce prelucrează datele colectate
prin intermediul formularului.
Adresa URL poate fi înscrisă ca adresă
absolută (de exemplu http://www.domeniul_meu.com/prelucrare_formular.php),
respectiv ca adresă relativă, care specifică o locaţie
relativă la locaţia paginii curente (de exemplu
prelucrare_formular.php).
Între tag-ul <FORM> şi tag-ul de închidere </FORM>
corespunzătoare, plasaţi controalele formularului.
Ca începător, este mai bine să
folosiţi în mod consecvent metoda POST, deoarece alegerea între metodele GET
şi POST este destul de complicată. Ca regulă empirică,
mulţi programatori folosesc GET pentru formulare care execută o
căutare sau o interogare, respectiv POST pentru formulare care
actualizează o bază de date sau un fişier. Două dezavantaje
ale metodei GET sunt acelea că impune o limită asupra
cantităţii de date care pot fi trimise scriptului de prelucrare
şi că transferă datele prin ataşarea şirurilor
codificate la adresa URL a scriptului de prelucrare. Astfel, datele trimise
prin metoda GET pot fi vizualizate de către utilizator. Un avantaj al
metodei GET este acela ca utilizatorii pot insera semne de carte în rezultatele
unei interogari sau al unei căutări care foloseşte metoda GET,
dar nu pot executa aceeaşi operaţie în cazul unei interogări sau
al unei căutări care foloseşte metoda POST.
10.4. Codificarea datelor
Înainte de a le trimite la destinatar, browser-ul
codifică datele din formular. Tehnica de codificare depinde de valoarea
atributului enctype. Valorile posibile pentru acest atribut sunt:
a) application/x-www-form-urlencoded – utilizată împreună cu metoda GET
(parametri prestabiliţi). În acest caz:
- datele sunt trimise sub formă de listă
de perechi nume=valoare, separate prin simbolul "&";
- spaţiile albe sunt înlocuite de simbolul
"+";
- caracterele non-alfanumerice sunt înlocuite cu
simbolul "%" urmat de codul ASCII corespunzător caracterului
respectiv;
- întreruperile de rând sunt înlocuite de
secvenţa "%0D%0A%" (CR/LF) (de exemplu:
nume=Popescu&prenume=Ion&adresa=Str.Mare+nr.1 %0D%0A%Romania)
b) text/plain –
utilizată împreună cu tipul de acţiune action="mailto"
pentru trimiterea datelor prin e-mail. Acest caz este similar cazului
precedent, cu excepţia faptului ca spaţiile nu mai sunt înlocuite de
simbolul "+".
c) multiform/form-data –
utilizată împreună cu metoda POST pentru trimiterea imaginilor
sau a altor fişiere către server.
10.5. Inserarea controalelor
de tip <INPUT> într-un formular
Utilizatorii interacţionează cu
formularele prin ceea ce poartă denumirea de "controale".
Cele mai utilizate tipuri de controale sunt cele
definite de elementul <INPUT> prin intermediul atributui TYPE. Acestea sunt:
a) Câmpuri de tip TEXT
Se folosesc la introducerea de caractere
alfanumerice într-un formular. Sintaxa uzuală este de forma:
<FORM>
Nume: <INPUT
TYPE="text" NAME="nume"><BR>
Prenume: <INPUT
TYPE="text" NAME="prenume">
</FORM>
Rezultatul afişat în browser va fi
următorul:

Câmpurilor de tip text le pot fi precizate
următoarele atribute:
|
TYPE: |
text |
|
SIZE: |
determină mărimea câmpurilor text ca număr de caractere.
Implicit are valoarea de 20 de caractere |
|
MAXLENGTH: |
determină numărul maxim de caractere ce pot fi intruse în
acel câmp |
|
NAME: |
reprezintă numele variabilei ce va fi trimisă aplicaţiei
ce prelucrează formularul |
|
VALUE: |
afişează o valoare implicită; în general rămâne
necompletată |
b) Câmpuri de tip parolă (PASSWORD)
Se folosesc la introducerea de parole într-un
formular. Sintaxa uzuală este de forma:
<FORM>
Username: <INPUT
TYPE="text" NAME="user"><BR>
Password: <INPUT
TYPE="password" NAME="password">
</FORM>
Rezultatul afişat în browser va fi
următorul:

Câmpurilor de tip parolă le pot fi precizate
următoarele atribute:
|
TYPE: |
password |
|
SIZE: |
determină mărimea câmpurilor parolă ca număr de
caractere. Implicit are valoarea de 20 de caractere |
|
MAXLENGTH: |
determină numărul maxim de caractere ce pot fi intruse în
acel câmp |
|
NAME: |
reprezintă numele variabilei ce va fi trimisă aplicaţiei
ce prelucrează formularul |
|
VALUE: |
afişează o valoare implicită; în general rămâne
necompletată |
c) Butoane de tip RADIO
Se folosesc pentru a determina efectuarea unei
singure alegeri dintr-o serie limitată într-un formular. Sintaxa
uzuală este de forma:
<FORM>
Sexul dvs.:<BR>
<INPUT
TYPE="radio" NAME="sex" VALUE="Barbat"> Barbat
<BR>
<INPUT TYPE="radio"
NAME="sex" VALUE="Femeie"> Femeie
</FORM>
Rezultatul afişat în browser va fi
următorul:

Butoanelor de tip radio le pot fi precizate
următoarele atribute:
|
TYPE: |
radio |
|
CHECKED: |
când se specifică, determină ca una din opţiuni să
fie bifată iniţial. Nu se poate folosi decât pentru un singur buton
radio, în caz contrar, această specificaţie va fi luată în
considerare numai la ultimul buton radio. |
|
NAME: |
reprezintă numele variabilei ce va fi trimisă aplicaţiei
ce prelucrează formularul |
|
VALUE: |
reprezintă valoarea ce va fi trimisă aplicaţiei ce
prelucrează formularul |
d) Casete de validare (CHECKBOX)
Se folosesc pentru a determina efectuarea mai multor
alegeri dintr-o serie limitată într-un formular. Sintaxa uzuală este
de forma:
<FORM>
Sunteti interesat de
:<BR>
<INPUT
TYPE="checkbox" NAME="programare" VALUE="html"
CHECKED> HTML <BR>
<INPUT
TYPE="checkbox" NAME="programare" VALUE="css">
Stiluri CSS<BR>
<INPUT
TYPE="checkbox" NAME="programare"
VALUE="javascript"> Javascript <BR>
<INPUT
TYPE="checkbox" NAME="programare" VALUE="php">
PHP
</FORM>
Rezultatul afişat în browser va fi
următorul:

Casetelor de validare le pot fi precizate
următoarele atribute:
|
TYPE: |
checkbox |
|
CHECKED: |
când se specifică, determină ca una din opţiuni să
fie bifată iniţial |
|
NAME: |
reprezintă numele variabilei ce va fi trimisă aplicaţiei
ce prelucrează formularul |
|
VALUE: |
reprezintă valoarea ce va fi trimisă aplicaţiei ce
prelucrează formularul |
De reţinut este faptul că doar casetele de
validare selectate sunt incluse în datele transmise către server.
e) Buton de transmitere (SUBMIT)
Fiecare formular necesită un buton de
transmitere. Acesta este elementul care determină browser-ul să
trimită numele şi valorile elementelor formularului către server
pentru a fi prelucrate.
Sintaxa uzuală este de forma:
<FORM>
<INPUT TYPE="submit"
VALUE="Trimite">
</FORM>
Rezultatul afişat în browser va fi
următorul:

Butonul de transmitere poate avea următoarele
atribute:
|
TYPE: |
submit |
|
NAME: |
reprezintă numele variabilei ce va fi trimisă aplicaţiei
ce prelucrează formularul |
|
VALUE: |
reprezintă textul (tag-ul) ce va fi afişat pe buton |
Un formular îi pot fi definite unul sau mai multe
butoane de transmitere.
f) Buton de transmitere tip imagine (IMAGE)
Se foloseşte în cazul în care doriţi
să adăugaţi puţină "personalitate" butonului
de transmitere.
Sintaxa uzuală este de forma:
<FORM>
<INPUT
TYPE="image" SRC="URL">
</FORM>
Folosind ca imagine fişierul buton.jpg,
existent pe site-ul nostru la adresa http://ghid-html.dap.ro/teste/buton.jpg,
precum şi pe CD-ul ataşat prezentului ghid, rezultatul afişat în
browser va fi următorul:

Acest tip de buton de transmitere poate avea
următoarele atribute:
|
TYPE: |
image |
|
NAME: |
reprezintă numele butonului ce poate fi utilizat în cazul
folosirii unor scripturi |
|
SRC: |
indică URL-ul fişierului ce conţine imaginea
respectivă |
g) Buton de anulare (RESET)
Este o idee bună să includeţi în
formular şi un buton de anulare. Acesta permite utilizatorului să
golească întregul conţinut al formularului.
Sintaxa uzuală este de forma:
<FORM>
<INPUT
TYPE="reset" VALUE="Anuleaza">
</FORM>
Rezultatul afişat în browser va fi
următorul:

Butonul de anulare poate avea următoarele
atribute:
|
TYPE: |
reset |
|
VALUE |
reprezintă textul (tag-ul) ce va fi afişat pe buton |
h) Buton generic (BUTTON)
Se foloseşte pentru a ataşa unui formular
un buton generic, care nu are un comportament prestabilit, prin apăsarea
lui lansându-se în execuţie un anumit script (folosind JavaScript sau alt
limbaj de programare).
Sintaxa uzuală este de forma:
<FORM>
<INPUT
TYPE="button" VALUE="Executa">
</FORM>
Rezultatul afişat în browser va fi
următorul:

Butonul generic poate avea următoarele
atribute:
|
TYPE: |
button |
|
NAME: |
reprezintă numele butonului ce poate fi utilizat în cazul
folosirii unor scripturi |
|
VALUE |
reprezintă textul (tag-ul) ce va fi afişat pe buton |
i)
Câmpuri de tip fişier
(FILE)
Sunt folosite pentru a permite utilizatorilor
să facă upload fişierelor pe server. Sintaxa uzuală este de
forma:
<FORM>
Username: <INPUT
TYPE="file">
</FORM>
Rezultatul afişat în browser va fi
următorul:

Câmpurilor de tip fişier le pot fi precizate
următoarele atribute:
|
TYPE: |
file |
|
SIZE: |
determină mărimea câmpurilor fişier ca număr de
caractere. Implicit are valoarea de 20 de caractere |
|
NAME: |
reprezintă numele variabilei ce va fi trimisă aplicaţiei
ce prelucrează formularul |
|
VALUE: |
specifică un nume de fişier prestabilit |
|
ACCEPT: |
lista tipurilor MIME separate de virgulă care indică tipul de
transfer |
j) Câmpuri ascunse (HIDDEN)
Sunt folosite pentru a trimite date fără
însă a permite utilizatorilor să le poată vizualiza sau
manipula, fiind totuşi necesare pentru prelucrarea corectă a
formularului. Sintaxa uzuală este de forma:
<FORM>
<INPUT
TYPE="hidden">
</FORM>
În acest caz, browser-ul nu va afişa nimic.
Utilitatea acestui tip de câmpuri o veţi remarca în exemplul din finalul
acestui capitol.
Câmpurilor ascunse le pot fi precizate
următoarele atribute:
|
TYPE: |
hidden |
|
NAME: |
reprezintă numele variabilei ce va fi trimisă aplicaţiei
ce prelucrează formularul |
|
VALUE: |
reprezintă valoarea ce va fi trimisă aplicaţiei ce
prelucrează formularul |
10.6. Alte tipuri de
controale
Pe
lângă controalele prezentate anterior mai există o serie identificate
fiecare prin propriul său element, şi anume:
a)
Liste de selecţie
Există
două tipuri de astfel de liste: liste cortină (drop-down list)
şi liste derulante (scrolling list). Ambele se obţin folosind
elementul <SELECT>, diferenţierea făcându-se cu ajutorul
atributului SIZE, în cazul listelor
cortină nefiind precizat sau având valoarea 1, iar în cazul listelor
derulante putând avea orice valoare diferită de 1.
Atributele
elementului <SELECT> sunt următoarele:
|
NAME: |
reprezintă numele variabilei ce va fi trimisă aplicaţiei
ce prelucrează formularul |
|
SIZE: |
reprezintă numărul de elemente din listă vizibile |
|
MULTIPLE: |
dacă este specificat, acest atribut permite realizarea de
selecţii multiple, a mai multor elemente concomitent prin folosirea
combinaţiilor SHIFT+click
pentru elemente consecutive, respectiv CTRL+click
pentru elemente neconsecutive |
Elementele
unor astfel de liste sunt marcate de tag-ul <OPTION>.
Atributele
elementului <OPTION> sunt următoarele:
|
SELECTED: |
când acest atribut este prezent, opţiunea respectivă este
preselectată |
|
VALUE: |
reprezintă valoarea ce va fi trimisă aplicaţiei ce
prelucrează formularul |
Sintaxa uzuală este de forma:
<FORM>
<SELECT NAME="lista
de selectie">
<OPTION
VALUE="1">primul element al listei</OPTION>
<OPTION
VALUE="2">al doilea element al listei</OPTION>
<OPTION
VALUE="3">al treilea element al listei</OPTION>
<OPTION
VALUE="4">al patrulea element al listei</OPTION>
<OPTION
VALUE="5">al cincilea element al listei</OPTION>
</SELECT>
</FORM>
Întrucât atributul SIZE nu a fost precizat, valoarea sa implicită fiind
"1", browser-ul va afişa o listă tip cortină:
|
|
|
Aplicând
atributului SIZE valoarea 3 (<select
name="lista de selectie" size="3">), vom
obţine o listă derulantă, astfel:
|
|
|
Pentru
realizarea de selecţii multiple se foloseşte atributul MULTIPLE. În acest caz vă
recomandăm să specificaţi o valoare diferită de 1
atributului SIZE întrucât listele
cortină nu acceptă selecţii multiple. Sintaxa folosită este
următoarea:
<SELECT NAME="lista
de selectie" SIZE="4" MULTIPLE>
Rezultatul afişat în browser va fi
următorul:
|
|
|
|
Selecţie
realizată cu SHIFT+click |
Selecţie
realizată cu CTRL+click |
În
cazul în care doriţi să introduceţi într-o astfel de listă
unul sau mai multe elemente preselectate, atunci trebuie să
adăugaţi atributul SELECTED
fiecăruia din elementele respective, astfel:
<FORM>
<SELECT NAME="lista
de selectie" SIZE="4" MULTIPLE>
<OPTION
VALUE="1">primul element al listei</OPTION>
<OPTION
VALUE="2" SELECTED>al doilea element al listei</OPTION>
<OPTION
VALUE="3">al treilea element al listei</OPTION>
<OPTION
VALUE="4">al patrulea element al listei</OPTION>
<OPTION
VALUE="5">al cincilea element al listei</OPTION>
</SELECT>
</FORM>
Rezultatul afişat în browser va fi
următorul:
|
|
|
Al doilea şi al
treilea element preselectate |
Pentru
gruparea elementelor, se foloseşte sub-elementul <OPTGROUP> în
interiorul elementului <SELECT>.
Acest
sub-element are un singur atribut (a cărui prezenţă este
obligatorie), şi anume LABEL, ce
defineşte tag-ul unui grup.
Sintaxa folosită este următoarea:
<FORM>
<SELECT NAME="lista
de selectie">
<OPTION SELECTED
VALUE="none">none</OPTION>
<OPTGROUP
LABEL="Grupa 1">
<OPTION
VALUE="1.1">primul element al grupei 1</OPTION>
<OPTION
VALUE="1.2">al doilea element al grupei 1</OPTION>
<OPTION
VALUE="1.3">al treilea element al grupei 1</OPTION>
</OPTGROUP>
<OPTGROUP
LABEL="Grupa 2">
<OPTION
VALUE="2.1">primul element al grupei 2</OPTION>
<OPTION
VALUE="2.2">al doilea element al grupei 2</OPTION>
<OPTION
VALUE="2.3">al treilea element al grupei 2</OPTION>
</OPTGROUP>
</SELECT>
</FORM>
Rezultatul afişat în browser va fi
următorul:

b)
Zone cu text (TEXTAREA)
La
fel ca şi o casetă cu text, o zonă cu text permite unui
utilizator să introducă un anumit text. Diferenţa constă în
faptul că o zonă cu text poate permite utilizatorului să introducă
mai multe linii de text, în timp ce o casetă cu text permite
utilizatorului să introducă o singură linie.
Atributele
elementului <TEXTAREA> sunt următoarele:
|
NAME: |
reprezintă numele zonei
cu text, respectiv al variabilei ce va fi trimisă aplicaţiei ce
prelucrează formularul |
|
ROWS: |
specifică numărul
de rânduri vizibile în zona cu text |
|
COLS: |
specifică numărul
de coloane vizibile în zona cu text |
|
READONLY: |
când este specificat,
indică faptul că utilizatorii formularului nu pot modifica
conţinutul zonei cu text |
Iată
sintaxa pentru crearea unei zone cu text:
<FORM>
<TEXTAREA NAME="zona
cu text" ROWS="5" COLS="25" READONLY>
Aceasta este o zona cu text
definita pe 5 randuri si 25 de coloane
</TEXTAREA>
</FORM>
Rezultatul afişat în browser va fi următorul:

10.7. Alte atribute ale
formularelor
În
afară de cele prezentate anterior, mai există două atribute ce
pot fi adăugate elementelor unui formular. Acestea sunt:
a)
accesskey – ce defineşte o scurtătură pentru
executarea unei comenzi specifice respectivului element şi/sau
focalizează acel element. Ca valori posibile se poate folosi orice
caracter (de exemplu "f"). Pentru a selecta sau executa comanda,
utilizatorul trebuie să ţină apăsată tasta ALT şi
apoi să apese tasta literei corespunzătoare (de exemplu ALT+f).
Notă: Nu toate browser-ele suportă acest atribut. De exemplu,
deşi în Microsoft Internet Explorer funcţionează corect, în
Mozilla Firefox combinaţia ALT+f va avea ca efect apelarea meniului File.
b)
tabindex – ce defineşte o altă ordine de parcurgere
a elementelor formularului în cazul apăsării tastei TAB (ordinea
prestabilită fiind aceea a ordinii în care elementele au fost
adăugate în formular). Valorile posibile ale acestui atribut sunt
reprezentate de orice număr întreg pozitiv.
Sintaxa
uzuală privind folosirea acestor atribute este:
<FORM>
Nume: <INPUT TYPE="text"
NAME="nume" ACCESSKEY="n" TABINDEX="1">Acest
control se poate accesa si cu ALT+n<BR>
Prenume: <INPUT TYPE="text"
NAME="prenume" ACCESSKEY="p"
TABINDEX="3">Acest control se poate accesa si cu ALT+p<BR>
Comentarii: <TEXTAREA NAME="comentarii"
ROWS="5" COLS="25" ACCESSKEY="c"
TABINDEX="2">Acest control se poate accesa si cu ALT+c. Folosind
tasta TAB in loc de mouse pentru deplasarea dintr-un camp in altul, veti
observa efectul atributului TABINDEX.
</TEXTAREA>
</FORM>
Rezultatul afişat în browser va fi
următorul:

10.8. Aplicaţie
practică
Pentru a pune în practică
cele prezentate anterior, vom crea un
fişier test10.html ce va cuprinde un model de formular complex, ale
cărui rezultate vor fi expediate pe adresa voastră de e-mail.
Pentru obţinerea unui aspect cât mai
plăcut, în sensul alinierii corespunzătoarele a elementelor
formularului, vom crea un tabel în interiorul acestuia.
<HTML>
<HEAD>
<TITLE>Formulare</TITLE>
</HEAD>
<BODY BGCOLOR="wheat">
<FORM NAME="formular_F1"
METHOD="POST" ENCTYPE="text/plain"
ACTION="mailto:adresa_de_mail@domeniu.com">
<INPUT TYPE="hidden"
NAME="Subiect" VALUE="Rezultatul exercitiului cu
formulare">
<TABLE BORDER="0"
CELLSPACING="10">
<TR><TD>Nume: </TD>
<TD><INPUT TYPE="text" SIZE="25"
MAXLENGTH="50" NAME="Nume" ACCESSKEY="n"
TABINDEX="1"></TD></TR>
<TR><TD>Prenume: </TD>
<TD><INPUT TYPE="text"
SIZE="25" MAXLENGTH="50" NAME="Prenume"
ACCESSKEY="p" TABINDEX="2"></TD></TR>
<TR><TD>Parola: </TD>
<TD><INPUT TYPE="password"
SIZE="25" MAXLENGTH="50" NAME="Parola"
ACCESSKEY="q" TABINDEX="3"></TD></TR>
<TR><TD>Sexul dvs.:</TD>
<TD><INPUT TYPE="radio"
NAME="Sex" VALUE="B"> Barbat
<INPUT TYPE="radio" NAME="Sex"
VALUE="F"> Femeie</TD></TR>
<TR><TD VALIGN="top">Sunteti
interesat/a de:</TD>
<TD><INPUT TYPE="checkbox"
NAME="Programare" VALUE="html" CHECKED> HTML <BR>
<INPUT TYPE="checkbox"
NAME="Programare" VALUE="css"> Stiluri CSS<BR>
<INPUT TYPE="checkbox"
NAME="Programare" VALUE="javascript"> Javascript
<BR>
<INPUT TYPE="checkbox"
NAME="Programare" VALUE="php"> PHP</TD></TR>
<TR><TD VALIGN="top">Ati ajuns la
capitolul:</TD>
<TD><SELECT NAME="Capitolul
curent">
<OPTION VALUE="1">CAP. 1. NOTIUNI
GENERALE</OPTION>
<OPTION VALUE="2">CAP 2. CREAREA SI
EDITAREA UNEI PAGINI WEB</OPTION>
<OPTION VALUE="3">CAP. 3. FORMATAREA
DOCUMENTULUI</OPTION>
<OPTION VALUE="4">CAP. 4. FORMATAREA
TEXTULUI</OPTION>
<OPTION VALUE="5">CAP. 5. CREAREA
LISTELOR</OPTION>
<OPTION VALUE="6">CAP. 6.
HYPERLINK-URI</OPTION>
<OPTION VALUE="7">CAP. 7. FOLOSIREA
IMAGINILOR</OPTION>
<OPTION VALUE="8">CAP. 8.
TABELE</OPTION>
<OPTION VALUE="9">CAP. 9.
CADRE</OPTION>
<OPTGROUP LABEL="CAP. 10. FORMULARE">
<OPTION VALUE="10.1.">Notiuni
generale</OPTION>
<OPTION VALUE="10.2.">Elementele
formularelor</OPTION>
<OPTION VALUE="10.3.">Crearea unui formular
</OPTION>
<OPTION VALUE="10.4.">Codificarea
datelor</OPTION>
<OPTION VALUE="10.5.">Inserarea
controalelor de tip "INPUT"</OPTION>
<OPTION VALUE="10.6.">Alte tipuri de
controale </OPTION>
<OPTION VALUE="10.7.">Alte atribute ale
formularelor</OPTION>
<OPTION VALUE="10.8." SELECTED>Aplicatie
practica</OPTION></OPTGROUP>
</SELECT></TD></TR>
<TR><TD
VALIGN="top">Comentarii:</TD>
<TD><TEXTAREA NAME="Comentarii"
ROWS="5" COLS="25" ACCESSKEY="c"
TABINDEX="4">Scrieti aici comentariile
voastre</TEXTAREA></TD></TR>
<TR><TD ALIGN="center"><INPUT
TYPE="submit" VALUE=" Trimite "></TD>
<TD ALIGN="center"><INPUT
TYPE="reset" VALUE="
Anulează"></TD></TR>
</TABLE>
</FORM>
</BODY>
</HTML>
Rezultatul afişat în browser va fi
următorul:

iar rezultatul primit (în cazul în care nu
completaţi nimic) va fi:
Subiect=Rezultatul
exercitiului cu formulare
Nume=
Prenume=
Parola=
Programare=html
Capitolul curent=10.8.
Comentarii=Scrieti aici
comentariile voastre