BluePink BluePink
XHost
Gazduire site-uri web nelimitata ca spatiu si trafic lunar la doar 15 eur / an. Inregistrare domenii .ro .com .net .org .info .biz .com.ro .org.ro la preturi preferentiale. Pentru oferta detaliata accesati site-ul BluePink
 
-Drumul tau catre internet-  
line decor
  HOME   -Tema la lectia 4-
line decor
   
 
Preluarea datelor dintr-un formular

In acest curs vom invata sa preluam datele dintr-un formular si sa le afisam.

 

Vom incepe cu cateva elemente de HTML:

 

  1. 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”>

 

  1. 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.

 

  1. Daca trimitem scriptului PHP date confidentiale, folosim o caseta text de tip password

<INPUT TYPE=”password” name=”mypassword”>

 

  1. 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>

 

  1. 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.

 

  1. 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”>

 

  1. 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)

 

  1. 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

 

  1. 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.

 

  1. 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 !