Category Archives: Tutoriale

Conectare la baza de date MySQL prin PDO

PDO ( PHP Data Object ) este o interfata ce permite accesarea bazei de date. Pentru a beneficia de avantajele PDO este recomandat sa aveti instalat PHP 5.1+ .

Ex 1: Conectare la baza de date MySQL ( instalat local )

In acest exemplu ne vom conecta la baza de date locala MySQL, mai concret la baza de date cu numele “test”.

Ex 2: Selectarea datelor din baza de date MySQL, iar in caz de eroare afisam mesajele de eroare

query(‘SELECT * FROM user’) as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print “Error!: ” . $e->getMessage() . “
“;
die();
}
?>

In exemplul 2 ne vom conecta la baza de date “test” si vom afisa toti utilizatorii cu toate campurile , iar daca se intampina o eroare atunci se va afisa un mesaj de eroare ( de ex: nu exista tabela “user” )

Tranzactii cu PDO

Folosim tranzactii cand avem de rulat mai multe comenzi SQL si daca cel putin unul dintre SQL-uri nu s-a executat cu success atunci se va face rollback, adica se vor anula si SQL-urile executate cu success.

Ex: Inserare in baza de date folosind tranzactii:

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$dbh->beginTransaction();
$dbh->exec(“insert into user (id, name, phone) values (1, ‘Ion’, ‘0259941’)”);
$dbh->exec(“insert into user_age (id, age) values (1, 16)”);
$dbh->commit();

} catch (Exception $e) {
$dbh->rollBack();
echo “Failed: ” . $e->getMessage();
}
?>

Obs: Daca unul dintre SQL-uri de inserare nu se executa cu success se va face rollback.

Constante in PHP

Inca nu am scris despre constante in php,desi sunt utilizate des. Constantele sunt variabile a caror valoare nu se poate schimba, de aici denumirea de constanta.

Exemplu:

Dupa cum ai vazut in exemplul de mai sus, constanta se scrie fara semnul $, fata de alte variabile.

Exemplu2:

Php-ul ofera cateva constante “magice” (definite).

Exemplu3:

Trait in PHP 5.4

Atentie, acest tutorial este recomandat personelor avand cunostinte php medii .

Folosind trait este foarte usoara sa reutilizezi metode ce contin cod . Este un mecanism nou ce permite implementarea metodelor ce pot fi reutilizate in clase.

Un scurt exemplu pentru folosirea trait-ului.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
trait helloWorld {
    public function helloWorld() {
        echo 'Hello World!';
    }
}
 
class helloWorld {
    use helloWorld;
}
 
$o = new helloWorld();
$o->helloWorld();   // va afisa: Hello World!
 
?>

Metodele din trait poti suprascrie din clasa, pot sa intelegegi prin “trait” o “clasa de baza” .

Ex2: extindem method helloWorld() in clasa helloWorld

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
trait helloWorld {
    public function helloWorld() {
        echo 'Hello World!';
    }
}
 
class helloWorld {
    use helloWorld;
 
    public function helloWorld() {
        echo 'Party People!';
    }
}
 
$o = new helloWorld();
$o->helloWorld();   // va afisa: Party People
 
 
?>

Variabile statice

Nu-mi amintesc cand am folosit ultima oara variabile statice, posibil ca in liceu cand am avut teme de rezolvat.

Sa creeam o functie recursiva counter() avand variabila statica $count .

Introdu urmatorul cod intr-un fisier text cu numele counter.php

<?php
function counter()
{
static $count = 0;

$count++;
echo $count;
if ($count

Cand apelam fisierul counter.php se va afisa:

12345678910

Fara instructiunea “static” functia recursiva s-ar executa pana la sfarsitul lumii si browserul se va bloca (depinde de calculator).

Foarte important este faptul ca doar valori se pot asocia unei variabile statice, nu si expresii.

Exemple:

Operatori PHP – Exercitii

Saptamanal rezolv cate un test la php, si tot timpul apar intrebari noi. De exemplu am avut urmatoarele probleme de rezolvat:

Ce se va afisa?

1. print 4 << 5;
2. print 3 << 4;
3. print 7 <> 3;

Pentru a afla rezultatul trebuie sa stim ce face operatorul “<>”.

Operatorul “<<" inmulteste numarul aflat pe partea stanga cu 2 la puterea numarului pe partea dreapta .

Operatorul "<<" imparte numarul aflat pe partea stanga cu 2 la puterea numarului pe partea dreapta .

Rezolvare:

1. 4 * 2^5 = 4 * 32 = 128

2. 3 * 2^4 = 3 * 16 = 48

3. 7 * 2^3 = 7 * 8 = 56

4. 16 / 2^3 = 16 / 8 = 2

POO in PHP – Introducere

Voi incepe introducerea POO in PHP cu un mic exemplu. POO inseamna programare orientata pe obiecte. Pentru a lucra cu obiecte avem nevoie de clase. Clasele sunt alcatuite din proprietati si metode. O proprietate este o variabila, iar o metoda este o functie in interiorul clasei.

Ex: Implementare clasa Phone care are 3 proprietati: brand, model, price (pret).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
 
class Phone {
 
    protected $brand;
    protected $model;
    protected $price;
 
    public function __construct($_brand, $_model, $_price) {
        $this->brand = $_brand;
        $this->model = $_model;
        $this->price = $_price
  }
 
  // Metode get, 
  // aceste metode sunt folosite pentru a afisa o propietate
  public getBrand(){
    return $this->brand;
  }
 
  public getModel(){
    return $this->model;
  }
 
  public getPrice(){
    return $this->price;
  }
 
  // Metode set,
  // aceste metodae sunt folosite pentru a asigna o valoare pentru o proprietate.
 
  public setBrand($_brand){
    $this->brand = $_brand;
  }
 
  public setModel($_model){
    $this->model = $_model;
  }
 
  public setPrice($_price){
    $this->price = $_price;
  }
 
}
 
?>

Ex2: Cream un obiect de tip Phone.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
 
$my_phone = new Phone();
 
echo $my_phone->getBrand();
echo '<br />';
echo $my_phone->getModel();
echo '<br />';
echo $my_phone->getPrice();
echo '<br />';
 
 
//schimbam proprietatile obiectului
$my_phone->setBrand('Samsung');
$my_phone->setModel('Galaxy S2');
$my_phone->setPrice('300 euro');
 
 
 
//afisam din nou toate proprietatile. 
echo $my_phone->getBrand();
echo '<br />';
echo $my_phone->getModel();
echo '<br />';
echo $my_phone->getPrice();
echo '<br />';
 
?>

Sfaturi
=======================
1. implementarea clasei se salveaza intr-un fisier separat si se va include in fisierul php unde vom avea nevoie.
2. Afisearea proprietatilor se poate pune intr-o functie pentru a nu duplica codul.

PS: Urmeaza si partea a 2-a .

Bafta!

Cum se poate modifica fiecare element dintr-un array?

Probabil majoritatea dintre voi si-a dorit sa modifice fiecare element dintr-un array cu un singur “sut”.
De exemplu avem o lista cu utilizatori salvata intr-un array:

Ex: Se cere sa se transforme fiecare nume de utilizator in majuscule.

Varianta1 clasica, probabil asta se invata in liceu / facultate:

<?php

for ($i=0; $i

Varianta2, transformam folosind functia array_map();

Asa ca varianta2 pare mult mai simpla si eleganta. Recomand sa folositi functia array_map() pentru modificarea fiecarui element dintr-un array.

Pentru Functia array_map() am definit primii 2 parametri:
– “strtoupper” : functia ce voi apela
– $utilizatori : array-ul ce doresc sa modific.

Bafta!

7 exemple des folosite cu functia date()

Functia date() este folosita pentru a formata ora / data si are peste 30 de optiuni pentru formatare.

Voi arata exemple cu cele mai folosite formatari.

1. Afiseaza data curenta ZZ-LL-AAAA

<?php

echo date("d-m-Y");

2. Afiseaza ora curenta OO:MM:SS

<?php

echo date("H:i:s")

3. 1+2, adica afiseaza data si ora curenta:

<?php

echo date("d-m-Y H:i:s")

Obs: Dupa cum se vede in functia date se poate folosi un singur sau mai multi parametrii. Ordinea nu conteaza, iar separatoarele "-", ":" se pot inlocui cu altele.

4. Afiseaza ziua din luna curenta cu 2 cifre:

<?php

echo date("d"); //va afisa valori intre 01..31

5. Afiseaza luna din anul curent cu 2 cifre:

<?php

echo date("m");

6. Afiseaza toate informatiile legate de data si ora in format ISO 8601.

<?php

echo date("c");

Obs: Acest format ISO 8601 este folosit in javascript , si cand dorim sa trimitem un parametru de tip data / ora atunci alegem acest format.

7. Afiseaza numele zilei curente (in engleza):

<?php

echo date("N"); // va afisa una dintre variante: Monday… Sunday

Functia time()

Functia time() in php returneaza numarul de secunde trecute de la data de 1 ianuarie 1970 00:00:00 . Probabil multi nu stiu de ce este utila aceasta functie, de ce vreau sa stiu numarul de secunde incepand cu 1 ianuarie 1970.

De exemplu vreau sa afisez data curenta :

1
2
3
4
5
<?php
 
echo date("d-m-Y");
 
?>

Functia date() foloseste functia time() pentru a afisa data curenta. Exemplu de mai sus scris altfel :

1
2
3
4
5
<?php
 
echo date("d-m-Y", time() );
 
?>

Exemplu 3: Vreau sa stiu cat va fi ora peste 3 ore (1 ora = 3600 secunde, 3 ore = 3 * 3600 secunde).

1
2
3
4
5
6
7
8
<?php
 
$acum = time();
$peste_3_ore = $acum + 3*3600;
 
echo date("H:i", $peste_3_ore);
 
?>

Exemplu 4: Vreau sa stiu data pentru saptamana viitoare ( 1 zi = 24 * 1 ora = 24 * 3600 secunde , 1 saptamana = 7 zile = 7 * 24 * 3600 secunde):

1
2
3
4
5
6
7
8
<?php
 
$acum = time();
$saptamana_viitoare = $acum + 7 * 24 * 3600;
 
echo date("d-m-Y", $saptamana_viitoare);
 
?>

Valideaza adresa de email in Javascript

Cateodata e bine sa validezi anumite campuri din formular inainte sa trimiti datele spre server, de exemplu o adresa de email . Pentru a citi valoare campului email am folosit jQuery ( este mai putin de scris ).

Fie urmatorul cod HTML:

// cream functia de validare
function validateEmailAddress() {

var reg = /^([A-Za-z0-9_-.])+@([A-Za-z0-9_-.])+.([A-Za-z]{2,4})$/;
var email = $(‘#email’).val();
if(reg.test(address) == false) {

alert(‘Invalid Email Address’);
return false;
}
}

Nu uita sa verifici adresa de email pe partea serverului, pentru ca unii s-ar putea sa aiba javascriptul dezactivat si atunci nu se va apela functia de validare.