In acest curs vom invata sa preluam datele dintr-un formular si sa le afisam.
Vom incepe cu cateva elemente de HTML:
- Pentru a descrie un formular folositi eticheta FORM, care are urmatoarea forma elementara:
<FORM METHOD=”metoda” ACTION=”url” >
Atributul METHOD poate lua una din valorile GET sau POST.
Cand METHOD este GET (implicit), datele introduse in form sunt trimise ca o cerere HTTP GET cu ?form_data adaugat la sfarsitul URL-ului specificat de atributul ACTION . Astfel, datele trimise prin metoda GET pot fi vizualizate de catre utilizator (dezavantaj).Folositea metodei GET permite ca trimiterea form-ului sa fie continuta in URL. Aceasta prezinta avantajul ca poate fi facuta bookmark in browserele actuale, dar, datele nu pot contine caractere non-ASCII precum "é" si "©". De asemenea, cantitatea de date care poate fi procesata prin metoda GET este limitata de lungimea maxima a URL-ului pe care o accepta serverul si browserul. Pentru siguranta, form-urile care ar putea contine caractere non-ASCII sau mai mult de 100 de catactere trebuie sa foloseasca METHOD=POST.Cu valoarea METHOD egala cu POST, datele introduse in form sunt trimise ca o cerere HTTP POST , iar datele sunt continute in interiorul cererii .Majoritatea browserelor actuale nu pot face bookmark la cereri POST , dar, astfel POST nu limiteaza lungimea si tipul de caracter introdus ,precum la GET.
Ca incepator este mai bine sa folositi in mod consecvent metoda POST, deoarece alegerea intre metodele GET si POST este destul de complicata.Ca regula empirica, multi programatori folosesc GET pentru formulare care executa o cautare sau o interogare, respectiv POST pentru formulare care actualizeaza o baza de date sau un fisier.Astfel, datele trimise prin metoda GET pot fi vizualizate de catre utilizator.
Atributul ACTION specifica adresa URL a scriptului PHP care prelucreaza datele adunate prin intermediul formularului. Adresa URL poate fi o adresa completa,care include protocolul, numele gazdei si calea de acces, respectiv o adresa partiala, care specifica o locatie relativa la locatia paginii curente.
Intre eticheta FORM si eticheta sa /FORM corespunzatoare, plasati controalele formularului
Ex 1:
<FORM method=”POST” action=”http://www.php.intercer.org/test.php”>
<FORM method=”POST” action=”test1.php”>
- Pentru a crea o caseta de tip text folosim un control text :
<INPUT TYPE=”text” name=”mytext”>
Atributul NAME atribuie casetei cu text un nume, astfel incat continutul sau sa fie accesibil unui script PHP.Numele pe care il atribuiti unui control trebuie sa fie unic in cadrul formularului si trebuie sa respecte regulile pentru denumirea variabilelor PHP, cu exceptia ca nu trebuie sa inceapa cu simbolul $. HTML nu are o eticheata /INPUT.
- Daca trimitem scriptului PHP date confidentiale, folosim o caseta text de tip password
<INPUT TYPE=”password” name=”mypassword”>
- Pentru a expedia datele unui script PHP aveti nevoie de un buton de expediere :
<INPUT TYPE=”submit” VALUE=”text”>
Atributul VALUE specifica textul care trebuie sa apara pe suprafata butonului de expediere
Ex 2:
Crearea unui formular cu 3 controale: un control de tip text, unul de tip password si un buton
<FORM METHOD=”post” ACTION=”login.php”>
Login : <INPUT TYPE=”text” name=”login”>
Parola : <INPUT TYPE=”password” name=”parola”>
<INPUT TYPE=”submit” VALUE=”Login”>
</FORM>
- Crearea de suprafete cu text
Ca o caseta cu text, o suprafata cu text permite unui utilizator sa introduca text.Cu toate acestea, o suprafata cu text poate permite utilizatorului sa introduca mai multe linii de text, in timp ce o caseta de text permite introducerea unei singure linii de text.
<TEXTAREA NAME=”mytext” ROWS=”numar” COLS=”numar” WRAP=”wrap”>
Atributul NAME(obligatoriu) specifica numele controlului.
Atributul ROWS(obligatoriu) specifica numarul liniilor de text vizibile in suprafata cu text
Atributul COLS(facultativ) specifica numarul coloanelor de text vizibile in suprafata cu text
Atributul WRAP(facultativ) specifica maniera de infasurare in interiorul suprafetei cu text.
O eticheta TEXTAREA trebuie combinata cu o eticheta /TEXTAREA.Orice text care apare intre etichete va fi prezentat drept continut initial al controlului de tip suprafata cu text.
- Crearea campurilor ascunse
Uneori este utila crearea asa-numitelor campuri ascunse.Valorile campurilor ascunse sunt trimise la server alaturi de valorile altor controale; cu toate acestea, utilizatorul nu are posibilitatea de a vizualiza sau manipula valorile campurilor
<INPUT TYPE=”hidden” NAME=”mytext” VALUE=”myvalue”>
- Crearea casetelor de validare
Pentru datele care pot avea numai una din doua valori, cum ar fi “pornit” sau “oprit”, caseta de validare este controlul ideal.De exemplu, caseta de validare este un control adecvat pentru a permite utilizatorului sa opteze pentru livrarea rapida a unui colet.In cazul in care caseta de validare este validata, coletul va fi livrat mai rapid, in caz contrar, coletul se va deplasa cu mijloace obisnuite.
<INPUT TYPE=”checkbox” NAME=”mycheck” value=”text” CHECKED>
Daca atributul CHECKED apare, caseta de validare va fi selectata in mod prestabilit; in caz contrar, caseta de validare nu este selectata initial.
Atributul VALUE specifica valoare care este trimisa serverului in cazul in care caseta de validare este selectata; daca atributul nu este specificat, se va trimite valoarea on (activat)
- Crearea butoanelor radio
Ca si casetele de validare, butoanele radio pot avea numai una din doua valori. Cu toate acestea, butoanele radio sunt organizate in grupuri, iar la un moment dat poate fi activat un singur buton radio din cadrul unui grup; toate celelalte trebuie sa fie dezactivate.Butoanele radio sunt utile pentru a permite unui utilizator sa aleaga dintr-o serie de alternative mutual exclusive.De exemplu, puteti folosi un set de trei butoane radio pentru a permite utilizatorului sa specifice tipul de ambalaj pentru un cadou: fara ambalaj, cu ambalaj simplu sau sofisticat. Numai unul din cele trei butoane radio poate fi activat; la un loc, setul de butoane radio ofera utilizatorului o tripla optiune.
<INPUT TYPE=”radio” NAME=”myradio” value=”text” CHECKED>
Atributele unui buton radio au aceeasi semnificatie ca si acelea ale unei casete de validare
Toti membrii unui set de casete de validare prezinta acceasi valoare a atributului name
- Crearea de selectii
O selectie este un meniu care defileaza, de unde utilizatorul poate alege una sau mai multe optiuni. De exemplu, intr-o selectie pot fi enumerate garniturile pentru pizza, astfel incat un utilizator sa poata selecta orice combinatie de garnituri pe care o doreste.
<SELECT NAME=”myselect” size=”numar” MULTIPLE>etichete OPTION</SELECT>
Eticheta SELECT este folosita in combinatie cu eticheta /SELECT. Intre cele doua etichete este inclusa o serie de etichete OPTION.
Atributul MULTIPLE arata ca utilizatorul poate alege mai multe optiuni mentinand apasata tasta CTRL si executand click pe aceasta.In absenta atributului MULTIPLE, utilizatorul poate selecta o singura optiune.Daca specificati atributul MULTIPLE, trebuie sa specificati si un atribut NAME, care atribuie un nume de tablou ca nume al controlului. De exemplu, un control de tip selectie care permite utilizatorului sa aleaga mai multe garnituri pentru desert trebuie denumit folosind sintaxa garnitura[], nu garnitura.
Atributul SIZE specifica numarul de optiuni vizibile.Prin utilizarea unui buton de derulare in jos sau a unei bare de defilare, utilizatorul poate manipula selectia pentru a obtine accesul la restul optiunilor si a alege dintre acestea.
Asa cum s-a aratat, o selectie este asociata cu una sau mai multe optiuni.Pentru a crea o optiune care urmeaza a fi utilizate in cadrul unei selectii, folositi urmatoare sintaxa:
<OPTION SELECTED VALUE=”text”>continut_optiune</OPTION>
Eticheta OPTION este combinata cu eticheta /OPTION. Textul dintre aceste etichete este cunoscut sub numele de continut al optiunii. Continutul optiunii apare in controlul SELECT.
Multi programatori HTML omit eticheta /OPTION, caz in care textul optiunii se extinde pana la urmatoarea eticheta OPTION sau /SELECT/.Totusi s-ar putea ca acest mod de utilizare sa nu fie compatibil cu versiunile ulterioate ale standardului HTML.
- Crearea unui buton de reinitializare.
Acest buton este folosit pentru ca utilizatorul sa poata sterge toate informatiile incluse intr-un formular.
<INPUT TYPE=”reset” VALUE=”reset”>
Unicul atribut obligatoriu este TYPE. Atributul optional VALUE specifica textul care va aparea pe suprafata butonului de reinitializare; daca atributul este omis, pe buton va scrie “Reset”.
Am vazut cum se poate crea un formular in HTML.Acum o sa vedem cum putem prelua variabilele din php si sa le afisam intr-o fereastra noua.
O variabila preluata dintr-un formular poate fi preluata prin una din modalitatile :
1. $_POST[“nume_variabila”] sau cu $_GET[“nume_variabila”] (in functie de atributul method al formului – post sau get)
2. De asemeni pot fi folosite si $HTTP_POST_VARS[“nume_variabila”] si $HTTP_GET_VARS[“nume_variabila”]
3. Daca in PHP.ini (fisierul de configurare al php-ului) aveti setat register_globals=on puteti folosi $nume_variabila
Personal va recomand prima varianta.
Sa luam cateva exemple de formulare simple :
Ex 3 : preluarea valorii unui control text
test.html
<form action="test.php" method="POST">
Introduceti numele : <input type="text" name="name"><br>
<input type="submit" value="Trimite">
</form>
test.php
<?php
echo "Salut ".$_POST["name"]." !!";
?>
Similar se face pentru controale de tip password si textarea.
Ex 4: preluarea valorii unui control checkbox
test1.html
<form action="test1.php" method="POST">
Alb <input type="checkbox" name="color_alb" value="alb"><br>
Rosu <input type="checkbox" name="color_rosu" value="rosu"><br>
Alb <input type="checkbox" name="color_verde" value="verde"><br>
<input type="submit" value="Trimite">
</form>
test1.php
<?php
echo "Ati selectat culorile :<br>";
if($_POST["color_alb"]!="")
echo "Culoarea ".$_POST["color_alb"]." !!<br>";
if($_POST["color_rosu"]!="")
echo "Culoarea ".$_POST["color_rosu"]." !!<br>";
if($_POST["color_verde"]!="")
echo "Culoarea ".$_POST["color_verde"]." !!<br>";
?>
Ex 5: preluarea valorii unui control radio
test2.html
<form action="test2.php" method="POST">
Alb <input type="radio" name="color" value="alb"><br>
Rosu <input type="radio" name="color" value="rosu"><br>
Alb <input type="radio" name="color" value="verde"><br>
<input type="submit" value="Trimite">
</form>
test2.php
<?php
echo "Ati selectat culoarea :".$_POST["color"]." !!!";
?>
Ex 6: preluarea valorii unui control select
test3.html
<form action="test3.php" method="POST">
Selecteaza culoare :
<select name="color[]" MULTIPLE size="3">
<option>alb</option>
<option>negru</option>
<option>rosu</option>
<option>verde</option>
<option>albastru</option>
<option>galben</option>
</select>
<input type="submit" value="Trimite">
</form>
Obs: daca doriti selectie simpla puneti name=”color” iar daca doriti sa fie vizibila o singura optiune la un moment dat stergeti size=”3”
test3.php
<?php
if(is_array($_POST["color"])){
$c=count($_POST["color"]);
echo "Ati selectat culorile<br>";
foreach ($_POST["color"] as $key => $value)
echo "$value<br>";
}
else{
echo "Ati selectat culoarea :".$_POST["color"]." !!!";
}
?>
Sper ca ati inteles aceste exemple !!
Acum sa trecem la tema !
Tema -crearea unui formular pentru inscrierea la un “newsletter”
Campurile de care aveti nevoie sunt specificate in urmatorul tabel:
Nume camp |
Obligatoriu(Da/Nu) |
Tip control |
Observatii |
Nume |
Da |
text |
|
Prenume |
Da |
text |
|
Sex |
Da |
radio |
|
Starea civila |
Da |
select |
casatorit(a), necasatorit(a), divortat(a) |
Data nasterii |
Da |
select |
se utilizeaza 3 controale select (zi,an,luna) |
Domiciliul |
Da |
textarea |
aici utilizatorul va scrie strada,nr,bloc,scara, etaj, apartament |
Oras |
Da |
text |
|
Judet/Sector |
Da |
select |
selectul va contine judetele din Romania+ cele 6 sectoare din Bucuresti |
Cod postal |
Da |
text |
|
Email |
Da |
text |
|
Telefon |
Nu |
text |
|
Fax |
Nu |
text |
|
Venit lunar |
Nu |
radio |
aici alegeti si voi niste intervale (100-200$, 201-300$, 301-500$, peste 500$ ) |
Hobby-uri |
Nu |
select multiple |
la lbera alegere |
Modalitate de expediere a newsletter-ului |
Da |
checkbox (3 controale) |
modalitatile prin care sa primeasca newsletterului : email,posta si fax |
Butoane pentru SUBMIT si RESET |
Da |
butoane (2) |
|
Cerinte :
1. Sa se creeze formularul in HTML
2. Sa se preia in PHP variabilele din formular si sa se afiseze intr-un tabel
Obs 1 - Se testeaza variabilele obligatorii in PHP (NU folosind JavaScript ).Daca a aparut vreo eroare (adica daca au fost omise campuri obligatori) se trebuie sa ne intoarcem in formularul initial pastrandu-se variabilele postate deja
ex : daca am introdus numele si am omis prenumele , cand ma va intoarce in pagina initiala numele trebuie sa fie deja completat.
Obs 2 - la email se testeaza corectitudinea adresei introduse : sa aiba @ si sa contina cel putin un caractet . (punct)
Spor la lucru ! |