PHP si MySql (Programator Web 2)

DOCUMENTATIE CURS

Scurta recapitulare formulare

Formularele sunt tratate in detaliu in cursul Programator Web 1, pentru ca sunt notiuni specifice html. In acest capitol doar reamintesc cateva din elementele unui formular, si explic folosirea lor cu php.
Important
Testeaza toate exemplele pe calculator, avand un fisier .html cu formularul, si un fisier .php cu codul in care se proceseaza cererea $_GET sau $_POST. ATENTIE: ambele fisiere trebuie sa se afle sub Document Root (sau un alias), iar fisierul html nu trebuie deschis prin dublu click ci prin http://localhost/cale/catre/fisier.html astfel incat si cererea catre fisierul .php sa fie trimisa prin http:// deci prin serverul web.

Important
Cum spuneam, valoarea atributului name al unui element de formular, se transforma in parametru de tip GET sau POST, si devine apoi cheie pentru superglobalele $_GET sau $_POST.
De exemplu, daca am: <input name="prenume" value="" />, si transmit formularul prin GET, in scriptul .php ce primeste cererea o sa am in $_GET["prenume"] valoarea completata de utilizator in acest input. Apoi, o sa vreau sa scriu probabil $prenume = $_GET["prenume"] ca sa folosesc in continuare in script variabila $prenume. Desi pot sa dau alt nume variabilei, exemplu $pnume = $_GET["prenume"] de cele mai multe ori este bine sa folosesc acelasi nume cu cel al parametrului GET, ca sa fie mai simplu de tinut minte. Din acest motiv, valoarea atributului name al unui element din formular, trebuie sa nu contina spatii, sau caractere speciale, sa aiba o forma ce poate fi mai departe variabila in PHP.

Elementele simple
Numesc elementele simple cele care nu reprezinta o selectie dintr-o lista de valori, si astfel sunt foarte clar preluate in PHP. Acestea sunt: input-ul text, input-ul password, textarea.

Cod HTML - formular.html Rezultat
<form method="post" action="procesare.php">
Prenume <br /> <input type="text" name="prenume" value="" /> <br />
Nume <br /> <input type="text" name="nume" value="" /> <br />
Parola <br /> <input type="password" name="parola" value="" /> <br />
Mesaj <br />
<textarea name="mesaj" cols="20" rows="20"></textarea>
<br /><br />
<input type="submit" name="buton" value="Trimite" />
<br />
</form>
Prenume

Nume

Parola

Mesaj






procesare1.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
/* intotdeauna pot folosi print_r() pentru debug, pentru a vedea exact cum arata $_GET sau $_POST sau alt array */
print_r($_POST); 
// sau folosesc fiecare informatie din $_POST in parte.
echo '<br />';
echo 'Numele tau este: ' . $_POST["prenume"] . ' ' . $_POST["nume"];
echo '<br />';
echo 'Parola are ' . strlen($_POST["parola"]) . ' caractere ';
echo '<br />';
echo 'Mesajul tau este: ';
echo '<br />';
echo nl2br($_POST["mesaj"]);
?>




sau, asa cum vom lucra mai des in practica, voi extrage in variabile simple fiecare element din $_POST:

procesare2.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
print_r($_POST);
// sau folosesc fiecare informatie din $_POST in parte. 
// dar extrag informatia in variabile simple
$prenume = $_POST["prenume"];
$nume = $_POST["nume"];
$parola = $_POST["parola"];
$mesaj = nl2br($_POST["mesaj"]);
echo '<br />';
echo 'Numele tau este: ' . $prenume . ' ' . $nume;
echo '<br />';
echo 'Parola are ' . strlen($parola) . ' caractere ';
echo '<br />';
echo 'Mesajul tau este: ';
echo '<br />';
echo $mesaj;
?>


Input radio
Dintr-un grup de butoane radio, utilizatorul nu poate alege decat o singura optiune. Dar, pentru acest lucru, butoanele radio din acelasi grup trebuie sa aiba aceeasi valoare pentru atributul name.
Cod HTML - formular.html Rezultat
<form method="post" action="procesare.php">
Sex <br />
Masculin <input type="radio" name="sex" value="m" /> <br />
Feminin <input type="radio" name="sex" value="f" /> <br />
<br />
<input type="submit" name="buton" value="Trimite" />
</form>
Sex
Masculin
Feminin


Rezultatul se poate vedea daca in procesare.php afisam $_POST cu print_r().
Input checkbox
Controalele de tip checkbox pot fi grupate pe grupuri, folosind acelasi name, insa aici utilizatorul are dreptul la selectarea mai multor optiuni. Astfel, folosind acelasi parametru se primesc mai multe valori. Ca sa facem acest lucru posibil, si sa primim un array si nu o singura valoare in $_GET (sau $_POST) trebuie sa folosim in html o sintaxa speciala, si anume adaugarea parantezelor drepte [] dupa valoarea de la name. Aceasta sintaxa se va folosi si la tagul select cand se permit selectii multiple.

Cod HTML - formular.html Rezultat
<form method="post" action="procesare.php">
Hobby
<input type="checkbox" name="hobby[]" value="sa inot" />
<input type="checkbox" name="hobby[]" value="sa skiez" />
<input type="checkbox" name="hobby[]" value="sa alerg" />
<input type="checkbox" name="hobby[]" value="sa cant" />
<br />
<input type="submit" name="buton" value="Trimite" />
</form>
Hobby



procesare.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
print_r($_POST); // observam ca $_POST["hobby"] este la randul lui un array
/*
se poate vedea si astfel:
*/
$hobby = $_POST["hobby"];
print_r($hobby);
/*
il putem transforma la nevoie in string, cu virgula intre elemente
*/
echo join(',', $hobby);
?>



Select - o singura optiune
Daca nu avem atributul multiple intr-un tag select, nu se poate transmite decat o singura valoare, si atunci nu e necesara folosirea sintaxei [].
Cod HTML - formular.html Rezultat
<form method="post" action="procesare.php">
<select name="lang">
    <option value="ro">Romana</option>
    <option value="en">Engleza</option>
    <option value="es">Spaniola</option>
    <option value="de">Germana</option>
</select>
<br />
<input type="submit" name="buton" value="Trimite" />
</form>


Select - selectie multipla
Similar cu input checkbox, folosesc sintaxa cu [] pentru ca se transmit mai multe valori prin acelasi parametru get (post).
Cod HTML - formular.html Rezultat
<form method="post" action="procesare.php">
<select name="limbi_straine[]" multiple="multiple">
    <option value="ro">Romana</option>
    <option value="en">Engleza</option>
    <option value="es">Spaniola</option>
    <option value="de">Germana</option>
</select>
<br />
<input type="submit" name="buton" value="Trimite" />
</form>


Pentru procesare am aceleasi posibilitati ca la input checkbox.
© 2006-2012 Crystal Mind Academy. All rights reserved