Category Archives: Uncategorized

Convertirea unui text intr-un alt set de caractere

Functia iconv() din php este utila cand doresti sa transformi codificarea unui text. Exemplu ai un text codificat ISO-8859-2 si doresti sa transformi in UTF8. Am pregatit un exemplu pentru transformarea/convertirea textului:

Dupa cum ai vazut in exemplu de mai sus, functia iconv() are 3 parametrii:

Ex: iconv(‘ISO-8859-2’, ‘UTF-8’, $text)
===============================================
– ‘ISO-8859-2’: setul de caractere sursa
– ‘UTF-8’: setul de caractere destinatie
– $text: textul sursa avand setul de caractere ‘ISO-8859-2’

Formatarea unui numar in PHP

Sa presupunem ca avem o tabela cu produse avand preturi cu structura diferita, ex: 10 lei, 1.3 lei, 1.12 lei . Cand dorim sa afisam aceste preturi prima data se va afisa fara zecimala, la pretul urmator cu o singura zecimala iar pentru ultimul pret cu 2 zecimale.

Se cere sa se afiseze in php, in mod automat, toate preturile cu 2 zecimale.

Pentru a rezolva aceasta cerinta, vom folosi functia number_format().

Exemplu:

1
2
3
4
5
6
7
8
9
10
<?php 
 
$price = array ( 10, 1.3, 1.12); //definim un sir cu preturi 
for ($i=0;$i<count($price), $i++) { // parcurgem sirul
  echo number_format($price[$i], 2).PHP_EOL;  // afisam pretul cu 2 zecimale, fiecare pret se va afisa pe linie noua.
}
 
 
?>

Adauga folder in include_path

Probabil ca multi dintre voi ati descarcat librarii php. Dupa ce ati descarcat o librarie, extrageti fisierele intr-un dosar, ex: /mylib/nume_librarie. Doriti sa includeti un fisier din acest folder in proiectul vostru.

In mod normal daca ai nevoie de un fisier din acest dosar vei scrie ceva de genul:

Ei bine, dar pe serverul unde veti incarca siteul, libraria se afla intr-un alt folder, ex: /server/mylib/nume_librarie. In acest caz aplicatia va avea erori.

Solutie: Pentru a nu hardcode-a calea catre librarie, aveti posibilitatea de a adauga folderul librariei in php.ini :

include_path = ‘.:/usr/share/php:/usr/share/pear’

Modificati linia de mai sus in:

include_path = ‘.:/usr/share/php:/usr/share/pear:/mylib/nume_librarie’

Dupa ce ati salvat fisierul php.ini si ati repornit serverul HTTP, veti putea folosi in aplicatia voastra urmatorul cod:

Solutia 2:

Daca nu aveti acces la fisierul php.ini atunci puteti sa adaugati folderul la include_path la inceputul aplicatiei, ex:

Introducere in JSON si PHP

JSON ( JavaScript Object Notation ) este tot mai des folosit in lumea IT. Un fisier JSON se implementeaza foarte rapid, este folosit de tot mai multe servicii web. Pe scurt este foarte un mod rapid de a transporta date intre doua interfete.

1. Cum se genereaza un fisier json dintr-un array PHP ?

Se va afisa:
[“sandor”,”ion”,”elena”]

2. Cum se transform un fisier json in array PHP ?

Se va afisa:
array(3) { [0]=> string(6) “sandor” [1]=> string(3) “ion” [2]=> string(5) “elena” }

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

Cautare case-insensitive in array

Acum cateva ore am avut nevoie de o cautare case-insensitive intr-un array, pentru ca pe mine m-a interesat o valoare indiferent cum este scrisa. De exemplu cautam termenul “Oradea” dar nu stiu exact daca in array apare sub forma “oradea”, “oRadea”, “ORADEA”.

Ca si prim pas am folosit functia in_array().

Ex:

Acest exemplu va afisa ‘false’ pentru ca nu exista elementul case-sensitive “Oradea”.

Rezolvare: Solutia este sa transformam atat elementul cautat cat si toate elementele din array in litere mici sau litere mari.

Ex2:

Acest exemplu2 va afisa ‘true’, pentru ca
strtolower(“BucureSti”) //bucuresti
array_map(‘strtolower’, $arr) // “oradea”, “bucuresti”, “brasov”

Tot asa se putea rezolva folosind functia strtoupper().

Ex3 : Voi scrie doar partea cu if

Totasa va afisa ‘true’.

Sper ca va fi de folos pentru multi incepatori ­čÖé