Invata PHPcu punctsivirgula.ro

1.
2. Instalare PHP
3. Ce inseamna PHP?
4. Notiuni de baza
5. Variabile. Constante
6. Vectori globali. Constante magice
7. Operatori
8. Structuri repetitive
9. Aplicatii: repetitive
10. Operatii cu vectori
11. Operatii cu siruri
12. Data si timp
13. Functii in PHP
14. Formulare
15. GET vs. POST
16.
17. Upload de fisiere
18. Headere
19. Cookies
C O N T I N U T
Tutorial PHP in limba romana.

Explicatii, exemple si aplicatii in PHP pentru incepatori


Operatii comune cu indicatori de timp     !  

Limbajul PHP ofera solutii simple (dar puternice) pentru lucrul cu data si timpul. In versiunile mai noi (dupa 5.1) sunt introduse facilitati avansate cum ar fi DST (Daylight Saving Time), Timezones, Date Intervals, s.a. Inainte de acestea insa lucrul cu timpul se realiza folosind Unix timestamp.

Conceptul de Unix timestamp desemneaza numarul de secunde scurse de la 1 ianuarie 1970 (cand se considera ca a inceput era Unix).

Unix Timestamp-ul curent: 
1268302790

Fiind vorba de un numar pozitiv ce are mereu aceeasi referinta, este usor sa se realizeze operatii cum ar fi scaderea, adunarea sau compararea a doua date reprezentate printr-un Unix timestamp.

Mai jos sunt cateva aplicatii menite sa evidentieze cat de usor se pot manipula date si ore in PHP.

<?php
// data curenta
print date( 'd.m.Y H.i.s' ); // 11.03.2010 12.19.50 
 
// data in format Unix (UNIX timestamp)
print time(); // 1268302790 
 
// alegerea unui fus orar
date_default_timezone_set( 'Europe/Bucharest' );
 
// parsarea unei date
print strtotime("now");
print strtotime('1st January 2004'); //1072915200
?>
Mihai a spus cat inseamna 1253137399? - 17.09.2009

ce data este pentru 1253137399?

Oana Ionita a spus setare luni in romana - 13.02.2010

@setlocale(LC_ALL, 'ro_RO.ISO8859-2', 'ro_RO.ISO-8859-2', 'ro', 'ro_RO', 'ro_RO', 'rom', 'romanian');


Adauga un comentariu la aceasta sectiune.

 


Cum aflu o data din trecut sau viitor?     !  

Sunt mai multe posibilitati. Se poate pleaca de la o data cunoscuta (pentru care avem Unix timestamp) si prin adunari/scaderi de secunde se afla data dorita (vezi aplicatia de mai jos). Sau se poate parsa o data folosind strtotime. Aceste solutii nu sunt intotdeauna aplicabile, iar in aceste cazuri se foloseste functia mktime.

Functia mktime primeste ca parametri anul, luna, ziua, ora pentru care se doreste aflarea detaliilor. Rezultatul este un timestamp ce poate fi formatat dupa cum se doreste.

<?php
# care este timestamp-ul pentru 31 januarie 2004, ora 13:00
echo mktime( 13, 0, 0, 1, 31, 2004); // afiseaza 1075546800 
 
# care este timestamp-ul pentru 3 septembrie 2014, ora 10:30
echo mktime( 10, 30, 0, 9, 3, 2014); // afiseaza 1409729400 
 
# ultima zi a unei luni poate fi exprimata ca ziua "0" a lunii urmatoare. 
$ultima = mktime(0, 0, 0, 3, 0, 2000);
echo strftime("Ultima zi din Februarie 2000 este: %d", $ultima );
// afiseaza Ultima zi din Februarie 2000 este: 29
 
# se pot folosi si valori negative
$zi = mktime(0, 0, 0, 3, -3, 2000);
echo strftime("Inainte de Martie 2000 cu 4 zile: %d", $zi );
// afiseaza Inainte de Martie 2000 cu 4 zile: 26
 
?>

Important: inainte de PHP 5.1.0, timestamp-urile negative nu erau suportate in unele sisteme (inclusiv Windows). De aceea domeniul valid al anilor era limitat între 1970 si 2038.

Nimic de afisat.


Adauga un comentariu la aceasta sectiune.

 


Cum se formateaza data sau ora?     !  

Formatarea datei sau a orei se poate realiza usor folosind functia date. Cu ajutorul acesteia se pot "extrage" doar acele parti din data care sunt necesare si se poate specifica formatul dorit. Spre exemplu, folosind functia date putem afisa data in format lung (de genul: "marti, 30 septembrie 2001") sau scurt (30.11.2001) sau cu aceeasi functie putem afisa ora sau oricare combinatie a celor doua.

Formatul se specifica print-un text format din caractere ce au o semnificatie anume, transmis ca parametru functiei date. Pentru detalii complete despre fiecare caracter in parte accesati http://www.php.net/manual/ro/function.date.php.

<?php
# se preia data/ora curenta
$acum = time(); // $acum este o data in format Unix: 1268302790 
 
# formatarea se realizeaza cu functia date
# daca nu se specifica altfel, functia date va formata data/ora curenta
echo date("H:i:s") . "<br>"; // afiseaza 12:19:50 
echo date("Y-m-d") . "<br>"; // afiseaza 2010-03-11 
echo date("F j, Y, g:i a") . "<br>"; // afiseaza March 11, 2010, 12:19 pm 
echo date("l") . "<br>"; // afiseaza Thursday 
 
# se poate specifica un al doilea parametru ce reprezinta data/ora care se formateaza
echo date("d-m-Y H:i:s", $acum) . "<br>"; // afiseaza 11-03-2010 12:19:50 
echo date("D, M d, Y", 1072915200) . "<br>"; // afiseaza Thu, Jan 01, 2004 
 
# combinat cu mktime, se pot obtine informatii despre zile din trecut sau viitor
# de exemplu, ce zi a fost pe 4 iulie 2000
$iulie4 = mktime( 0, 0, 0, 7, 4, 2000 ); # aflu timestamp-ul
echo date( 'l', $iulie4 ); # formatez acel timestamp - extrag doar ziua
// afiseaza Tuesday
 
?>

Nimic de afisat.


Adauga un comentariu la aceasta sectiune.

 


Cum determin ce zi si ora va fi peste 480 ore?     !  

Pentru a efectua usor operatii cu zile si ore, se va folosi formatul de data Unix (UNIX timestamp), returnat de functia time(). Practic, data este afisata ca numarul de secunde scurs de la 1 ianuarie 1970, ora 00:00. Avand aceasta noua perspectiva (de a privi datele ca un numar de secunde), operatiile cu date (de genul 'cat va fi peste 2 zile', 'ce ora a fost acum xxx minute', etc) devin extrem de simple luand forma unor simple scaderi si adunari de secunde.

<?php
// cerinta este: "cat va fi ora peste 480 de ore, adica peste (480 * 60 *60) secunde
 
$acum = time();
$maiTarziu = 480 /*ore*/ * 60 /*minute*/ * 60 /*secunde*/;
 
print "Data ceruta este: " . date( 'd.m.Y H.i.s', $acum + $maiTarziu );
// Data ceruta este: : 31.03.2010 13.19.50 
?>

Nimic de afisat.


Adauga un comentariu la aceasta sectiune.

 


Cum validez o data sau un timp?     !  

Sunt mai multe modalitati de a valida datele si orele introduse de un utilizator, in functie de formatul acestora. Cel mai uzual insa se folosesc cele 2 functii de aflare a timestamp-ului: mktime si strtotime. Acestea returneaza anumite valori in cazul in care data verificata nu este valida.

<?php
# verificam daca a existat 29 februarie 2004
$rezultat = mktime( 0, 0, 0, 2, 29, 2004 );
if( $rezultat === FALSE || $rezultat === -1 ) { 
	# daca rezultatul nu este un timestamp inseamna ca data nu e valida
	echo "Data nu exista";
} else {
	echo "Data este valida";
}
// Rezultat: Data este valida
 
# similar se foloseste si strtotime
$rezultat = strtotime( "29 february 2010" );
if( $rezultat === FALSE || $rezultat === -1 ) { 
	echo "Data nu exista";
} else {
	echo "Data este valida";
}
// Rezultat: Data este valida
 
 
?>

Nimic de afisat.


Adauga un comentariu la aceasta sectiune.

 


Cum afisez un mesaj de salut in functie de ora curenta (a serverului)?     !  

<?php
$t = localtime( time(), true ); // returneaza un vector cu elementele datei si orei locale
$h = $t[ 'tm_hour' ]; // iau doar ora
 
if( $h >= 7 && $h <= 11 ) print "Buna dimineata!";
elseif( $h > 11 && $h < 18 ) print "Buna ziua!";
elseif( $h >= 18 && $h < 22 ) print "Buna seara!";
elseif( $h >= 22 ) print "Noapte buna!";
else print "Ce? Esti treaz(a) la ora asta?";
 
// Buna ziua! 
?>

Nimic de afisat.


Adauga un comentariu la aceasta sectiune.

 


Cum afisez luna curenta si toate cele 12 luni in limba romana?     !  

Nota: aceasta secventa de cod depinde de configurarile serverului pe care este executata. Limba romana trebuie instalata pe server pentru a avea rezultatele scontate.

<?php
setlocale( LC_TIME , 'ROM_ROM' );
 
// afiseaza numele celor 12 luni
for( $m = 1; $m <= 12; $m++ ) {
	print strftime( "%B", mktime( 0,0,0, $m, 1, 2008 ) ) . "\n";
}
 
// afiseaza luna curenta
print 'Luna curenta este: ' . strftime( "%B", time() );
?>
Rezultatul (este posibil sa nu fie in limba romana!):
January
February
March
April
May
June
July
August
September
October
November
December

Luna curenta este: March

Nimic de afisat.


Adauga un comentariu la aceasta sectiune.

 


Cum determin durata de executie a unui script PHP?     !  

<?php
$time_start = microtime(true); # la inceputul codului PHP
 
/* ... codul PHP cu diverse operatii ... */
 
# la final se face diferenta si se afiseaza
$time_end = microtime(true);
 
print "Durata de executie (secunde): " . ( number_format($time_end - $time_start, 6) ); 
// Durata de executie (secunde): 0.016191 
?>

Nimic de afisat.


Adauga un comentariu la aceasta sectiune.