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 este element de tip bloc?
<div> <img> <span>
<div>Web Programming and Development</div>
Care cod CSS afiseaza textul subliniat?
font-style: italic; text-decoration: underline; font-weight: 500;
h2 {
  text-decoration: underline;
}
Clic pe functia JavaScript care apeleaza o alta functie dupa un anumit timp.
insertBefore() setTimeout() querySelector()
function someFunction() { alert("CoursesWeb.net"); }
setTimeout("someFunction()", 2000);
Clic pe instructiunea care returneaza numarul total de elemente dintr-un array asociativ.
count($array) count($array, 1) strlen()
$food =["fruits" =>["banana", "mar"), "veggie" =>["ceapa", "rosie"));
$nr_food = count($food, 1);
echo $nr_food;       // 6
Indicati Viitorul Perfect la negativ al verbului din paranteze, in propozitia: "The child (to not play) by Sunday".
has't played haven't been playing will haven't played
The child will haven't played by Sunday.
- Copilul nu s-ar fi jucat pana duminica.
Indicati Viitorul Perfect pentru verbul "contar" (a povesti) la forma "Él".
habrá contado va a contar contaba
Él no habrá contado el cuento.
- El nu ar fi spus povestea.
Preluare date din formular si adaugare in MySQL

Last accessed pages

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (261628)
  2. Limba spaniola curs online incepatori si avansati (26775)
  3. Teste PHP - incepatori (4264)
  4. Poezii pentru copii, in engleza (38536)
  5. Creare CAPTCHA cod verificare anti-spam (577)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1272)
  2. Curs HTML gratuit Tutoriale HTML5 (968)
  3. Coduri pt culori (726)
  4. Creare si editare pagini HTML (567)
  5. Conditional IF in Limba Engleza - Fraze Conditionale (526)
Chat
Discuta sau lasa un mesaj pt. ceilalti utilizatori
Full screenInchide