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
Ce atribut indica faptul ca un camp de formular trebuie completat?
required="required" autofocus="autofocus" placeholder="text"
<input type="text" name="name1" required="required" />
Ce metoda CSS misoreaza sau mareste dimensiunile unui element (inclusiv continutul)?
translate() scale() skew()
#some_id:hover {
  transform: scale(2, 1.5);
  -ms-transform: scale(2, 1.5);    /* IE 9 */
  -moz-transform: scale(2, 1.5);   /* Firefox */
}
Click pe metoda obiectului Date care returneaza ziua din luna.
setDate() getMonth() getDate()
var rightnow = new Date();
var day = rightnow.getDate();
alert(day);
Ce functie este folosita pentru a incarca un fisier pe server?
is_file() move_uploaded_file() fopen()
if(move_uploaded_file($_FILES["field_name"]["tmp_name"], "dir/file_name")) {
  echo "Fisierul a fost incarcat";
}
Cum se spune in engleza expresia: "Ploua cu galeata"?
rain cats and dogs rain buckets quiet rain
In Bucharest it`s raining cats and dogs.
- In Bucuresti ploua cu galeata.
Cum se spune in spaniola expresia: "Ploua cu galeata"?
llover cubo llover a cántaros lluvia tranquila
En Madrid está lloviendo a cántaros.
- In Madrid ploua cu galeata.
Preluare date din formular si adaugare in MySQL

Last accessed pages

  1. Pronume - Exercitii si teste engleza incepatori (5946)
  2. Verbe Dinamice si Statice - Dynamic and Static Verbs (4203)
  3. Viitor perfect si Viitorul perfect continuu - Future perfect and Continuous (10773)
  4. Substantivul din limba engleza - The Noun (28633)
  5. Verbe modale - SHALL, SHOULD, OUGHT TO, WILL, WOULD, USED TO, BE TO, DARE (15771)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (2368)
  2. Curs HTML gratuit Tutoriale HTML5 (1696)
  3. Curs si Tutoriale JavaScript (1659)
  4. Curs PHP MySQL, Tutoriale si Scripturi PHP (1613)
  5. Curs CSS Online Tutoriale CSS3 (1494)