Procesarea formularului într-un singur fișier PHP
În lecția precedentă, formularul nostru era plasat
pe o pagină, dar era trimis pe altă pagină.
De fapt, acest lucru nu este obligatoriu. Dacă lăsăm
atributul action gol sau îl eliminăm
complet, formularul va fi trimis către
aceeași pagină.
Cum va funcționa: la prima accesare a paginii vom completa formularul cu date și vom apăsa butonul. După aceea, pagina se va reîmprospăta și codul său se va executa din nou, dar de data aceasta cu datele din formular.
Să ne uităm la un exemplu. Să presupunem că avem într-un singur fișier un formular și procesarea lui:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
var_dump($_GET);
?>
La prima accesare a paginii, funcția var_dump
va afișa un array gol. Iar după trimiterea formularului
va afișa deja datele formularului. Adică prima
dată $_GET va fi gol, iar a doua oară
- va conține datele formularului.
Acest lucru poate duce la probleme. Să presupunem, de exemplu, că vom introduce numere în formular și vrem să afișăm suma acestor numere pe ecran:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
echo $_GET['test1'] + $_GET['test2'];
?>
În acest caz, la prima accesare a paginii
vom vedea erori PHP, legate de faptul că
array-ul $_GET este gol, iar noi accesăm
elementele sale.
Aici trebuie spus că este posibil ca erorile dvs. să nu apară în browser. În acest caz verificați dacă afișarea erorilor PHP este activată, de asemenea asigurați-vă că este prima accesare a paginii și în bara de adrese nu există date din formular.
Să remediam problema. Pentru aceasta vom adăuga o condiție în care vom verifica dacă formularul a fost trimis.
De exemplu, putem verifica dacă $_GET este
nevid. Dacă $_GET nu este gol -
atunci formularul a fost trimis și putem executa
adunarea. În caz contrar, este încă
prima accesare a paginii și adunarea nu va fi executată.
Iată codul corectat:
<form action="" method="GET">
<input name="test1">
<input name="test2">
<input type="submit">
</form>
<?php
if (!empty($_GET)) {
echo $_GET['test1'] + $_GET['test2'];
}
?>
Întrebați utilizatorul despre numele de familie, prenume și patronimic. După trimiterea formularului, afișați pe ecran datele introduse.