Formularele HTML se folosesc in general pentru ca utilizatorii unui site sa poata transmite comentarii si diferite date personale la server, care de obicei sunt inregistrate si stocate intr-o baza de date.
In acest tutorial este prezentat modul de preluare a datelor dintr-un formular cu diferite campuri si adaugarea acestora intr-un tabel MySQL.
Etapele sunt urmatoarele:
<?php
// Se defineste un Header pt. a utiliza setul de caractere cu format UTF-8
header('Content-type: text/html; charset=utf-8');
$mesaj = ''; // Variabila folosita pt. mesajul ce va fi afisat pt. utilizator
// Se verifica daca sunt primite datele de la formular
if (isset($_POST['nume']) && isset($_POST['email']) && isset($_POST['studii'])) {
// Se filtreaza datele pt. eliminare posibile spatii exterioare si tag-uri
$_POST = array_map("trim", $_POST);
$_POST = array_map("strip_tags", $_POST);
// Se verifica daca "magic_quotes_gpc()" este setat ON
// Daca e ON, se aplica stripslashes() pentru a nu se adauga de 2 ori '\' cand va fi aplicat "mysql_real_escape_string()"
if(get_magic_quotes_gpc()) { $_POST = array_map("stripslashes", $_POST); }
// Se verifica daca au fost completate corect toate campurile
// Daca au fost completate le preia in variabile, in caz contrar seteaza o variabila tip Array cu mesaj de eroare
// Verifica daca Numele are cel putin 3 caractere si maxim 40
if(strlen($_POST['nume'])>2 && strlen($_POST['nume'])<41) $nume = $_POST['nume'];
else $eroare[] = 'Caseta cu Nume si Prenume trebuie sa contina intre 3 si 40 caractere';
// Verifica daca adresa de e-mail scrisa corespunde formatului unei adrese de e-mail
if(preg_match('/^([a-zA-Z0-9]+[a-zA-Z0-9._%-]*@([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4})$/', $_POST['email'])) $email = $_POST['email'];
else $eroare[] = 'Completati corect adresa de e-mail';
// Verifica daca a fost selectata o valoare pt. 'studii'
if(strlen($_POST['studii'])>2) $studii = $_POST['studii'];
else $eroare[] = 'Selectati "Ultimile Studii"';
// Verifica daca a fost bifat buton pt. 'stare civila'
if(isset($_POST['stare_c']) && strlen($_POST['stare_c'])>2) $stare_c = $_POST['stare_c'];
else $eroare[] = 'Selectati butonul corespunzator pentru "Stare civila"';
// Daca nu exista nici un mesaj de eroare, filreaza datele cu mysql_real_escape_string() si le adauga in baza de date
// Altfel, in cazul vreunei erori, adauga in variabila $mesaj
if (!isset($eroare)) {
include('conn.php'); // Include fisierul pt. conectare-selectare baza de dat
// Se aplica functia de filtrare mysql_real_escape_string()
$nume = mysql_real_escape_string($nume);
$email = mysql_real_escape_string($email);
$studii = mysql_real_escape_string($studii);
$stare_c = mysql_real_escape_string($stare_c);
// Acum se adauga mai in siguranta aceste date in MySQL
$sql = "INSERT INTO `membri` (`nume`, `email`, `studii`, `stare_c`) VALUES ('$nume', '$email', '$studii', '$stare_c')";
if (mysql_query($sql, $conn)) {
$mesaj = '<font color="blue">Datele au fost adaugate</font>';
$nume = ''; $email = '';
}
else $mesaj = '<font color="red">Datele nu au putut fi adaugate '. mysql_error(). '</font>';
mysql_close($conn);
}
else $mesaj = '<font color="red">'. implode('<br />', $eroare). '</font>';
}
echo $mesaj;
?>
<form action="" method="post">
Nume si Prenume: <input type="text" name="nume" id="nume" value="<?php if(isset($nume)) echo $nume; ?>" /><br />
Adresa E-mail: <input type="text" name="email" id="email" value="<?php if(isset($email)) echo $email; ?>" /><br />
Ultimile studii: <select name="studii" id="studii">
<option value="">---</option>
<option value="scoala_generala">Scoala generala</option>
<option value="liceu">Liceu</option>
<option value="post_liceala">Post liceala</option>
<option value="colegiu">Colegiu</option>
<option value="facultate">Facultate</option>
</select><br />
Stare civila: <input type="radio" name="stare_c" id="stare_c1" value="necasatorit/a" /> Necasatorit/a
<input type="radio" name="stare_c" id="stare_c2" value="casatorit/a" /> Casatorit/a<br />
<input type="submit" name="submit" id="submit" value="Trimite" />
</form>
Acest tutorial arata doar modul de preluare, verificare si adaugare a datelor dintr-un formular HTML intr-un tabel MySQL. Pentru a nu fi adaugate date prea multe, una dupa alta, sau cu Refresh, se poate seta o Sesiune cu timpul UNIX dupa ce au fost adaugate datele in MySQL, iar acea sesiune sa fie verificata inainte de a prelua date din formular.
Sau, alta metoda, imediat dupa ce datele au fost adaugate in tabel se poate face un redirect catre alta pagina, cu formula:
header('Location: url_adresa_pagina');