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:

  1. Trebuie sa fie creat tabelul MySQL cu, coloanele in care sa fie adaugate datele din formular.
  2. Se verifica daca sunt primite date de la formular.
  3. Daca sunt primite, se filtreaza de posibile spatii exterioare si tag-uri.
  4. Se verifica daca au fost completate toate campurile din formular, in caz contrar se defineste mesaj de eroare pt. fiecare.
  5. Daca sunt completate toate campurile, se preia valorile din ele si apoi se filtreaza cu real_escape_string().
  6. Ultimul pas, executarea unei comenzi SQL INSERT pt. adaugarea datelor in tabelul MySQL.
- Alte explicatii sunt in codul scriptului.

Sunt necesare 3 fisiere: - Iata codul PHP pentru fiecare fisier:

Cod conn.php

<?php
// Datele pt. conectare la baza de date MySQL
$host = 'localhost'; // Serverul MySQL
$utilizator = 'user'; // Utilizator pt. server
$parola = 'pass'; // Parola utilizator
$numebd = 'nume_bd'; // Numele bazei de date

// Conectarea la baza de date
$conn = new mysqli($host, $utilizator, $parola, $numebd);

// verifica conexiunea
if (mysqli_connect_errno()) {
 exit('Connect failed: '. mysqli_connect_error());
}

// Setarea pt. lucru cu format UTF-8
$conn->query('SET character_set_client="utf8",character_set_connection="utf8",character_set_results="utf8";');

Cod make_table.php

<?php
include 'conn.php'; // Include fisierul pt. conectare la baza de date

// Creaza tabelul membri, avand coloanele id, nume, email, studii, stare_c
$sql = "CREATE TABLE `membri` (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nume varchar(42), email varchar(55), studii varchar(20), stare_c varchar(11)) CHARACTER SET utf8 COLLATE utf8_general_ci";
if($conn->query($sql) === TRUE) echo '<h4>Tabelul <u>membri</u> a fost creat.</h4>';
else echo 'h4>Tabelul <u>membri</u> nu a putut fi creat deoarece - '. mysqli_connect_error() . '</h4>';

Cod adauga.php

<?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 tag-uri si spatii exterioare
$_POST = array_map("strip_tags", $_POST);
$_POST = array_map("trim", $_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 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 real_escape_string()
 $nume = $conn->real_escape_string($nume);
 $email = $conn->real_escape_string($email);
 $studii = $conn->real_escape_string($studii);
 $stare_c = $conn->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($conn->query($sql) === TRUE) {
 $mesaj = '<h4>Datele au fost adaugate</h4>';
 $nume = ''; $email = '';
 }
 else $mesaj = '<h4>Datele nu au putut fi adaugate '. mysql_error(). '</h4>';
}
else $mesaj = '<h4>'. implode('<br>', $eroare). '</h4>';
}

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>

- Formularul folosit la acest script este cel de mai jos. Puteti testa sa vedeti cum functioneaza
Nume si Prenume:
Adresa E-mail:
Ultimile studii:
Stare civila: Necasatorit/a Casatorit/a

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');

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag e folosit pentru a adauga liste cu definitii in element <dl>?
<dt> <dd> <li>
<dl>
 <dt>HTML</dt>
  <dd> - Hyper Text Markup Language</dd>
  <dd> - Limbaj de cod pentru pagini web</dd>
</dl>
Care proprietate CSS poate sa ascunda un element in pagina, lasand spatiu gol in locul lui?
display position visibility
#id {
  visibility: hidden;
}
Indicati evenimentul declansat cand se apasa clic pe un obiect in pagina.
onclick onmouseover onfocus
document.getElementById("id").onclick = function(){
  alert("http://www.MarPlo.net/");
}
Indicati variabila PHP ce contine datele din $_GET, $_POST si $_COOKIE.
$_SESSION $_GET $_REQUEST
if(isset($_REQUEST["id"])) {
  echo $_REQUEST["id"];
}
Care din urmatoarele cuvinte reprezinta un Verb?
lighting believe path
I believe in my path.
- Eu cred in calea mea.
Care din urmatoarele cuvinte reprezinta un Verb?
creer camino iluminaciĆ³n
creer = a crede; camino = cale /drum; iluminaciĆ³n = iluminare
Preluare date din formular si adaugare in MySQL

Last accessed pages

  1. Download carti electronice si programe pentru Limba Engleza (16001)
  2. Verbe modale - SHALL, SHOULD, OUGHT TO, WILL, WOULD, USED TO, BE TO, DARE (13445)
  3. Drag si Drop cu atribute HTML5 (230)
  4. Instructiuni repetitive while (348)
  5. Curs si Tutoriale JavaScript (10781)

Popular pages this month

  1. Gramatica limbii engleze - Prezentare Generala (2680)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (865)
  3. Gramatica limbii spaniole. Indrumator si prezentare generala (692)
  4. Alphabet and Pronunciation - Alfabetul si pronuntia in limba engleza (621)
  5. Prezentul simplu si continuu - Present Tense Simple and Continuous (600)