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 // 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";');
<?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>';
<?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>
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');
<img src="http://coursesweb.net/imgs/webcourses.gif" width="191" height="63" alt="Courses-Web" />
#id { font-style: italic; }
$(document).ready(function() { $(".a_class").click(function(){ $(this).hide("slow"); }); });
function fname($a, $b) { echo $a * $b; }
I have been walking for 5 hours. - Merg pe jos de 5 ore.
Yo fui entrenador. - Am fost antrenor.