Curs Php-mysql

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 creaza un text ingrosat?
<q> <strong> <em>
<p>Adresa: <strong>http://CoursesWeb.net/</strong> - Tutoriale.</p>
Care din aceste coduri CSS afiseaza textul ingrosat?
text-size: 18px; font-style: italic; font-weight: 800;
#id {
  font-weight: 800;
}
Ce functie JavaScript apeleaza o alta functie, in mod repetat, la un anumit interval de timp?
setInterval() setTimeout() push()
function someFunction() { alert("CoursesWeb.net"); }
setInterval("someFunction()", 2000);
Clic pe variabila definita corect in PHP.
var vname = 8; $vname = 8; $vname == 8;
$vname = 8;
echo $vname;
Care din urmatoarele forme ale verbului "travel" (a calatori) e la timpul Prezent Perfect?
have traveled shall travel had traveled
We have traveled in space.
- Noi am calatorit (deja) in spatiu.
Care din urmatoarele forme ale verbului "pintar" (a picta) se foloseste la Trecutul Imperfect?
ir a pintar pintaba pintó
La niña pintaba un arco iris.
- Fetita picta un curcubeu.
Preluare date din formular si adaugare in MySQL

Last accessed pages

  1. Trecut nedefinit 4 (309)
  2. Expresii cu Tener (2115)
  3. Expresii pentru vreme (2554)
  4. Gramatica limbii spaniole. Indrumator si prezentare generala (67526)
  5. Comparative si superlative (3622)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1062)
  2. Gramatica limbii engleze - Prezentare Generala (664)
  3. Exercitii engleza - English Tests and exercises - Grammar (606)
  4. Prezentul simplu si continuu - Present Tense Simple and Continuous (476)
  5. Coduri pt culori (404)