Limbajul PHP

PHP Introducere. Ce poate face PHP? De ce PHP? Ce este nou în PHP 7.

Ce poate face PHP?
 
  • PHP poate genera conținut dinamic al paginii
  • PHP poate crea, deschide, citi, scrie, șterge și închide fișiere pe server
  • PHP poate colecta date de formular
  • PHP poate trimite și primi cookie-uri
  • PHP poate adăuga, șterge, modifica date din baza de date
  • PHP poate fi utilizat pentru a controla accesul utilizatorului
  • PHP poate cripta date

Cu PHP nu ești limitat la output HTML. Puteți output imagini, fișiere PDF și chiar filme Flash. De asemenea, puteți output​​​​​​​ orice text, cum ar fi XHTML și XML.

De ce PHP?
 
  • PHP rulează pe diverse platforme (Windows, Linux, Unix, Mac OS X etc.)
  • PHP este compatibil cu aproape toate serverele folosite astăzi (Apache, IIS etc.)
  • PHP acceptă o gamă largă de baze de date
  • PHP este gratuit. Descărcați-l din resursa oficială PHP: www.php.net
  • PHP este ușor de învățat și rulează eficient pe server

Ce este nou în PHP 7
​​​​​​​
  • PHP 7 este mult mai rapid decât versiunea stabilă și populară anterioară(PHP 5.6)
  • PHP 7 a îmbunătățit gestionarea erorilor
  • PHP 7 acceptă declarații de tip (Type Declarations) mai stricte pentru argumentele funcției
  • PHP 7 acceptă operatori noi (cum ar fi operatorul național spațial: <=>)

PHP Introducere. Ce ar trebui să știți deja: HTML, CSS, JavaScript. Ce este PHP?

PHP Introducere

Codul PHP este executat pe server.

Ce ar trebui să știți deja

Înainte de a continua, ar trebui să aveți o înțelegere de bază despre următoarele:
 
  • HTML
  • CSS
  • JavaScript

Ce este PHP?
 
  • PHP este un acronim pentru "PHP: Hypertext Preprocessor"
  • PHP este un limbaj de scripturi de surse deschise, utilizat pe scară largă
  • Scripturile PHP sunt executate pe server
  • PHP se poate descărca și utiliza gratuit

PHP este un limbaj uimitor și popular!

Este suficient de puternic pentru a fi în centrul celui mai mare sistem de blogging de pe web (WordPress)!
Este suficient de adânc pentru a rula cea mai mare rețea de socializare (Facebook)!

PHP Instalare. De ce am nevoie? ​​​​​​​Utilizați o gazdă web cu suport PHP. Configurați PHP pe propriul computer.

Instalare PHP

De ce am nevoie?

Pentru a începe să utilizați PHP, puteți să:
 
  • Găsiți o gazdă web (web host) cu suport PHP și MySQL.
  • Instalați un server web (web server) pe propriul computer, apoi instalați PHP și MySQL.

Utilizați o gazdă web (web host) cu suport PHP


Dacă serverul dvs. a activat suportul pentru PHP, nu trebuie să faceți nimic.
Creează doar câteva fișiere .php, le plasează în directorul tău web (web directory) și serverul le va analiza automat pentru tine.
Nu este necesar să compilați nimic sau să instalați instrumente suplimentare.
Deoarece PHP este gratuit, majoritatea gazdelor web (web host) oferă suport PHP.

Configurați PHP pe propriul computer

Cu toate acestea, dacă serverul dvs. nu acceptă PHP, trebuie să:
 
  • instalați un server web
  • instalați PHP
  • instalați o bază de date, cum ar fi MySQL

Site-ul oficial PHP (PHP.net) are instrucțiuni de instalare pentru PHP: http://php.net/manual/en/install.php

Sintaxă PHP. Sintaxa PHP de bază. Script PHP. Coduri de scripturi PHP. Etichete HTML. Funcția PHP „echo”. Instrucțiuni PHP.

Sintaxă PHP

Un script PHP este executat pe server, iar un simplu rezultat HTML este trimis înapoi în browser.

Sintaxa PHP de bază

Un script PHP poate fi plasat oriunde în document.
Un script PHP începe cu <?php și se termină cu ?>:
 
<?php
// Codul PHP se introduce aici
?>

Extensia implicită pentru fișierele PHP este „.php”.

În mod normal, un fișier PHP conține etichete HTML și unele coduri de scripturi PHP (PHP scripting code).

Mai jos, avem un exemplu simplu de fișier PHP, cu un script PHP care folosește funcția PHP încorporată „echo” pentru a scoate textul „Hello World!” pe o pagină web:

Exemplu:
 
<!DOCTYPE html>
<html>
<body>
<h1>Prima mea pagina PHP</h1>
<?php
echo "Hello World!";
?>
</body>
</html>

Instrucțiunile PHP se termină cu punct și virgulă (;).

Sintaxă PHP. PHP Case Sensitivity. Clase, funcții și funcții definite de utilizator. Declarații echo. Variabila $color.

PHP Case Sensitivity

În PHP, NU există cuvinte cheie (keywords) (de exemplu, if, else, while, echo etc.), clasele, funcțiile și funcțiile definite de utilizator (classes, functions, and user-defined functions) sunt case-sensitive.

În exemplul de mai jos, toate cele trei declarații echo sunt egale și legale:

Exemplu:
 
<!DOCTYPE html>
<html>
<body>

<?php
ECHO "Hello World!<br>";
echo "Hello World!<br>";
EcHo "Hello World!<br>";
?>

</body>
</html>

Notă: Cu toate acestea; toate numele de variabile sunt case-sensitive!

Priviți exemplul de mai jos; numai prima declarație va afișa valoarea variabilei $color! Acest lucru se datorează faptului că $color, $COLOR și $coLOR sunt tratate ca trei variabile diferite:

Exemplu:
 
<!DOCTYPE html>
<html>
<body>

<?php
$color = "red";
echo "Mașina mea este " . $color . "<br>";
echo "Casa mea este " . $COLOR . "<br>";
echo "Barca mea este " . $coLOR . "<br>";
?>

</body>
</html>

Comentarii în PHP. PHP acceptă mai multe moduri de a comenta. Sintaxă pentru comentarii pe o singură linie. Sintaxă pentru comentarii pe mai multe linii. Folosire comentarii pentru a lăsa părți din cod.

Comentarii în PHP

Un comentariu în cod PHP este o linie care nu este executată ca parte a programului. Singurul său scop este să fie citit de cineva care se uită la cod.

Comentariile pot fi folosite pentru:
 
  • Lasă-i pe alții să înțeleagă codul tău.
  • Reamintește-ți ce ai făcut - Majoritatea programatorilor s-au confruntat cu revenirea la propria muncă un an sau doi mai târziu și trebuie să-și dea seama ce au făcut. Comentariile îți pot aminti la ce te gândeai când ai scris codul.

PHP acceptă mai multe moduri de a comenta:

Sintaxă pentru comentarii cu o singură linie (single-line comment):

Exemplu:
 
<!DOCTYPE html>
<html>
<body>

<?php
//  Acesta este un comentariu cu o singură linie (single-line comment)
# Acesta este, de asemenea, un comentariu cu o singură linie (single-line comment)
?>

</body>
</html>

Sintaxă pentru comentarii cu mai multe linii (multiple-line comments):

Exemplu:
 
​​​​​​​<!DOCTYPE html>
<html>
<body>

<?php
/*
Acesta este un block de comentarii cu mai multe linii (multiple-lines comment block)
care se întinde pe multiple linii
*/
?>

</body>
</html>

Folosire comentarii pentru a lăsa părți din cod:

Exemplu:
 
<!DOCTYPE html>
<html>
<body>

<?php
// De asemenea, puteți utiliza comentarii pentru a lăsa părți dintr-o linie de cod
$x = 5 /* + 15 */ + 5;
echo $x;
?>

</body>
</html>

Variabile PHP. Variabile de ieșire. Declarația PHP echo.

Variabile de ieșire (Output Variables)

Declarația PHP echo este adesea folosită pentru transmite (output) date pe ecran.

Următorul exemplu va arăta cum să transmiteți (output) text și o variabilă:

Exemplu:
 
<?php
$txt = "lectii-virtuale.ro";
echo "Îmi place $txt!";
?>

Următorul exemplu va produce aceeași ieșire (output) ca exemplul de mai sus:

Exemplu:
 
<?php
$txt = "lectii-virtuale.ro";
echo "Îmi place " . $txt . "!";
?>

Următorul exemplu va produce suma a două variabile:

Exemplu:
 
<?php
$x = 5;
$y = 4;
echo $x + $y;
?>

Notă: Veți afla mai multe despre declarația echo și despre modul în care se pot transmite date pe ecran în capitolul următor.

Variabile PHP. Crearea (declararea) variabilelor PHP. Containere pentru stocarea datelor. Reguli pentru variabilele PHP.

Variabile PHP

Variabilele sunt „containere” (containers) pentru stocarea informațiilor.

Crearea (declararea) variabilelor PHP

În PHP, o variabilă începe cu semnul $, urmată de numele variabilei:
 
<?php
$txt = "Hello world!";
$x = 5;
$y = 10.5;
?>

După executarea declarațiilor de mai sus, variabila $txt va păstra valoarea "Hello world!", variabila $x va deține valoarea 5, iar variabila $y va păstra valoarea 10.5.

Notă: Când atribuiți o valoare text unei variabile, puneți ghilimele în jurul valorii.

Notă: Spre deosebire de alte limbaje de programare, PHP nu are nicio comandă pentru declararea unei variabile. Este creat în momentul în care i-ați atribuit prima dată o valoare.

Gândiți-vă la variabile ca la containere pentru stocarea datelor (containers for storing data).

Variabile PHP

O variabilă poate avea un nume scurt (cum ar fi x și y) sau un nume mai descriptiv (age, carname, total_volum).

Reguli pentru variabilele PHP:
 
  • O variabilă începe cu semnul $, urmată de numele variabilei.
  • Un nume de variabilă trebuie să înceapă cu o literă sau un caracter de subliniere.
  • Un nume de variabilă nu poate începe cu un număr.
  • Un nume de variabilă nu poate conține decât caractere alfa-numerice și underscores (A-z, 0-9 și _).
  • Denumirile variabilelor sunt case-sensitive ($age și $AGE sunt două variabile diferite).

Amintiți-vă că numele variabilei PHP sunt case-sensitive!

Variabile PHP. PHP Cuvântul cheie global. Variabilă globală. Tablou numit $GLOBALS [index].

PHP Cuvântul cheie global

Cuvântul cheie global (global keyword) este utilizat pentru a accesa o variabilă globală dintr-o funcție.

Pentru a face acest lucru, utilizați înainte de variabile (în interiorul funcțieicuvântul cheie global (global keyword):

Exemplu:
 
<?php
$x = 5;
$y = 10;

function myTest() {
    global $x, $y;
    $y = $x + $y;
}

myTest();
echo $y; // outputs 15 (15  ieșiri)
?>

PHP stochează de asemenea toate variabilele globale într-un tablou numit $GLOBALS [index]. Indicele conține numele variabilei. Acest tablou este de asemenea accesibil din funcții și poate fi utilizat pentru a actualiza direct variabilele globale.

Exemplul de mai sus poate fi rescris astfel:

Exemplu:
 
<?php
$x = 5;
$y = 10;

function myTest() {
    $GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}

myTest();
echo $y; // outputs 15 (15 ieșiri)
?>

Variabile PHP. PHP Cuvântul cheie static.

PHP Cuvântul cheie static

În mod normal, când o funcție este finalizată / executată (completed/executed), toate variabilele sale sunt șterse. Cu toate acestea, uneori dorim ca o variabilă locală NU fie ștearsă. Avem nevoie de asta pentru un alt job.

Pentru a face acest lucru, utilizați cuvântul cheie static (static keyword) când declarați pentru prima dată variabila:

Exemplu:
 
<?php
function myTest() {
    static $x = 0;
    echo $x;
    $x++;
}

myTest();
myTest();
myTest();
?>

Apoi, de fiecare dată când se apelează funcția, acea variabilă va avea în continuare informațiile pe care le conține din ultima dată când a fost apelată funcția.

Notă: Pentru funcție, variabila este încă locală.

Variabile PHP. PHP este un limbaj tiparit mai puțin. Domeniul variabilelor PHP. Domeniul global și local. Variabilă cu sfera globală. Variabilă cu scop local.

PHP este un limbaj tiparit mai puțin

În exemplul precedent, observați că nu trebuie să îi spunem PHP-ului ce tip de dată (data type) este variabila.

PHP asociază automat un tip de date (data type) variabilei, în funcție de valoarea acesteia. Deoarece tipurile de date  (data types) nu sunt setate într-un sens strict, puteți face lucruri precum adăugarea unui șir la un număr întreg fără a provoca o eroare.

În PHP 7, au fost adăugate declarații de tip (type declarations). Aceasta oferă o opțiune de a specifica tipul de date (data type) preconizat la declararea unei funcții și, activând cerința strictă, va arunca o „eroare fatală” (Fatal Error) pe o nepotrivire de tip (type mismatch).

Veți afla mai multe despre cerințele stricte și non-stricte și declarațiile de tip de date din capitolul Funcții PHP.

Domeniul variabilelor PHP

În PHP, variabilele pot fi declarate oriunde în script.

Domeniul de aplicare al unei variabile este partea scriptului unde variabila poate fi referită / folosită (referenced/used).

PHP are trei domenii diferite de variabile :
  • local
  • global
  • static

Domeniul global și local

O variabilă declarată în afara unei funcții are un SCOP GLOBAL (GLOBAL SCOPE) și poate fi accesată numai în afara unei funcții:

Exemplu:

Variabilă cu sfera globală:
 
<?php
$x = 5; // sfera globală

function myTest() {
    // folosirea x în interiorul acestei funcții va genera o eroare
    echo "<p>Variabila x în interiorul funcției este: $x</p>";
}
myTest();

echo "<p>Variabila x din exteriorul funcției este : $x</p>";
?>

O variabilă declarată în cadrul unei funcții are un SCOP LOCAL și poate fi accesată numai în cadrul acestei funcții:

Exemplu:

Variabilă cu scop local:
 
<?php
function myTest() {
    $x = 5; // scop local
    echo "<p>Variabila x din interiorul funcției este: $x</p>";
}
myTest();

//  folosirea x în afara funcției va genera o eroare
echo "<p>Variabila x din afara funcției este: $x</p>";
?>

Puteți avea variabile locale cu același nume în funcții diferite, deoarece variabilele locale sunt recunoscute doar de funcția în care sunt declarate.

PHP echo și print. Declarațiile PHP echo și print. Declarația PHP echo. Afișare text. Afișare variabile.

Declarații PHP echo și print 

Cu PHP, există două modalități de bază pentru a obține rezultate: echo și print.

În acest tutorial folosim echo sau print în aproape fiecare exemplu. 

Declarații PHP echo și print

echo și print sunt la fel mai mult sau mai puțin. Ambele sunt folosite pentru a emite (output) date pe ecran.

Diferențele sunt mici: echo nu are o valoare returnată în timp ce print are o valoare returnată 1, astfel încât să poată fi folosită în expresii. echo poate lua mai mulți parametri (deși o astfel de utilizare este rară) în timp ce print poate lua un argument. echo este marginal mai rapid decât print.

Declarația PHP echo

Instrucțiunea echo poate fi folosită cu sau fără paranteze: echo sau echo().

Afișați textul

Următorul exemplu arată cum să afișați (output) text cu comanda echo (observați că textul poate conține marcaj HTML):

Exemplu:
 
<?php
echo "<h2>PHP is Fun!</h2>";
echo "Hello world!<br>";
echo "Sunt pe cale să învăț PHP! <br>";
echo "Acest ", "string ", "a fost ", "făcut ", "cu mai mulți parametri.";
?>

Afișați variabile

Următorul exemplu arată cum să afișați (output) text și variabile cu declarația echo:

Exemplu:
 
<?php
$txt1 = "Invățați PHP";
$txt2 = "lectii-virtuale.ro";
$x = 5;
$y = 4;
echo "<h2>" . $txt1 . "</h2>";
echo "Studiu PHP at " . $txt2 . "<br>";
echo $x + $y;
?>

PHP echo și print. Declarația PHP print. Afișare text. Afișare variabile.

Declarația PHP print

Instrucțiunea print poate fi folosită cu sau fără paranteze: print sau print().

Afișați textul

Următorul exemplu arată cum să afișați (output) text cu comanda print (observați că textul poate conține marcaj HTML):

Exemplu:
 
<?php
print "<h2>PHP is Fun!</h2>";
print "Hello world!<br>";
print "Sunt pe cale să învăț PHP!";
?>

Afișați variabile

Următorul exemplu arată cum să afișați (output) text și variabile cu instrucțiunea print:

Exemplu:
 
<?php
$txt1 = "Învățați PHP";
$txt2 = "W3Schools.com";
$x = 5;
$y = 4;

print "<h2>" . $txt1 . "</h2>";
print "Studiați PHP la " . $txt2 . "<br>";
print $x + $y;
?>

Tipuri de date PHP. PHP String. PHP Integer. Reguli pentru numere întregi. Funcția PHP var_dump().

Tipuri de date PHP(PHP Data Types)

Variabilele pot stoca date de diferite tipuri și diferite tipuri de date (data types) pot face lucruri diferite.

PHP acceptă următoarele tipuri de date (data types):
 
  • String
  • Integer
  • Float (floating point numbers - also called double)
  • Boolean
  • Array
  • Object
  • NULL
  • Resource

PHP String

Un string este o secvență de caractere, cum ar fi „Hello world!”.

Un string poate fi orice text din ghilimele. Puteți utiliza ghilimele simple sau duble:

Exemplu:
 
<?php
$x = "Hello world!";
$y = 'Hello world!';
echo $x;
echo "<br>";
echo $y;
?>

PHP Integer

Un tip de date întreg (integer data type) este un număr non-zecimal cuprins între -2 147.483.648 și 2.147.483.647.

Reguli pentru numere întregi (integers):
 
  • Un număr întreg (integer) trebuie să aibă cel puțin o cifră.
  • Un număr întreg (integer) nu trebuie să aibă o zecimală.
  • Un număr întreg (integer) poate fi pozitiv sau negativ.
  • Numerele întregi (integers) pot fi specificate în: zecimal (baza 10), hexazecimal (baza 16), octal (baza 8) sau notare binară (baza 2).

În următorul exemplu $x este un număr întreg (integer). Funcția PHP var_dump() returnează tipul (data type) și valoarea datelor:

Exemplu:
 
<?php
$x = 5985;
var_dump($x);
?>

Tipuri de date PHP. Obiect PHP. Valoarea PHP NULL. Resurse PHP.

Obiect PHP (PHP Object)

Un object (obiect) este un tip de date (data type) care stochează date și informații despre modul de procesare a acestor date.

În PHP, un object (obiect) trebuie declarat explicit.

Mai întâi trebuie să declaram o clasă de obiect (class of object). Pentru aceasta, folosim cuvântul cheie class (class keyword). O clasă (class) este o structură care poate conține proprietăți și metode:

Exemplu:
 
<?php
class Car {
    function Car() {
        $this->model = "VW";
    }
}

// creați un obiect (object)
$herbie = new Car();

// arată proprietățiile obiectului (object)
echo $herbie->model;
?>

Valoarea PHP NULL (PHP NULL Value)

Null este un tip de date special care poate avea o singură valoare: NULL.

O variabilă tip de date (data type) NULL este o variabilă care nu are nicio valoare atribuită.

Sfat: Dacă o variabilă este creată fără valoare, i se atribuie automat o valoare de NULL.

Variabilele pot fi de asemenea golite prin setarea valorii la NULL:

Exemplu:
 
<?php
$x = "Hello world!";
$x = null;
var_dump($x);
?>

Resurse PHP (PHP Resource)

Tipul resursei speciale nu este un tip de date (data type) real. Este stocarea unei referințe la funcții și resurse externe PHP.

Un exemplu obișnuit de utilizare a tipului de date resurse (resource data type) este un apel la baza de date.

Tipuri de date PHP. PHP Float. Funcția PHP var_dump(). PHP Boolean. PHP Array.

PHP Float

Un float (număr flotant) este un număr cu punct zecimal sau un număr în formă exponențială.

În exemplul următor $x este un float. Funcția PHP var_dump() returnează tipul (data type) și valoarea datelor:

Exemplu:
 
<?php
$x = 10.365;
var_dump($x);
?>

PHP Boolean

Un boolean reprezintă două stări posibile: TRUE sau FALSE.

Exemplu:
 
$x = true;
$y = false;

Booleans sunt adesea folosiți în testarea condiționată. Veți afla mai multe despre testarea condiționată într-un capitol ulterior al acestui tutorial.

PHP Array

Un array (tablou) stochează mai multe valori într-o singură variabilă.

În următorul exemplu $cars este un array (tablou) . Funcția PHP var_dump() returnează tipul (data type) și valoarea datelor:

Exemplu:
 
<?php
$cars = array("Volvo","BMW","Toyota");
var_dump($cars);
?>

Stringuri PHP. Funcții PHP String. Funcția PHP strrev(). Funcția PHP strpos(). Funcția PHP str_replace(). Referință completă PHP pentru string-uri.

Funcții PHP String

strrev()
- inversează un string (șir)

Funcția PHP strrev() inversează un string (șir).

Exemplu:

Inversați string- ul (șirul) „Hello world!”:
 
<?php
echo strrev("Hello world!"); // outputs !dlrow olleH (ieșiri! dlrow olleH)
?>

strpos() - Căutați un text într-un string (șir)

Funcția PHP strpos() caută un text specific într-un string (șir). Dacă se găsește o potrivire, funcția returnează poziția caracterului primei potriviri. Dacă nu se găsește nicio potrivire, aceasta va returna FALSE.

Exemplu:

Căutați textul „world” în string-ul (șirul) „Hello world!”:
 
<?php
echo strpos("Hello world!", "world"); // outputs 6 (6 ieșiri)
?>

Sfat: Prima poziție a caracterelor dintr-un string (șir) este 0 (nu 1).

str_replace() - Înlocuiți textul într-un string (șir)

Funcția PHP str_replace() înlocuiește unele caractere cu alte caractere dintr-un string (șir).

Exemplu:

Înlocuiți textul „world” cu „Dolly”:
 
<?php
echo str_replace("world", "Dolly", "Hello world!"); // outputs Hello Dolly! (ieșiri Hello Dolly!)
?>

Referință completă PHP pentru string-uri (șiruri)

Referința string-ului (șirului) PHP conține descrierea și exemplul de utilizare, pentru fiecare funcție!

Stringuri PHP. Funcții PHP String. Funcția PHP strlen(). Funcția PHP str_word_count().

Stringuri PHP

Un string (șir) este o secvență de caractere, precum „Hello world!”.

Funcții PHP String

În acest capitol vom analiza unele funcțiile utilizate frecvent pentru manipularea string-urilor (șirurilor).

strlen() - întoarce lungimea unui string (șir)

Funcția PHP strlen() returnează lungimea unui string (șir).

Exemplu:

Întoarceți lungimea string-ului (șirului) „Hello world!”:
 
<?php
echo strlen("Hello world!"); // outputs 12 (12  ieșiri)
?>

str_word_count() - Numără cuvintele într-un string (șir)

Funcția PHP str_word_count() numără numărul de cuvinte dintr-un string (șir).

Exemplu:

Numărați numărul de cuvinte din string-ul (șirul) „Hello world!”:
 
<?php
echo str_word_count("Hello world!"); // outputs 2 (2  ieșiri)
?>

Numere PHP. PHP Tipul de date float. Funcțiile PHP: is_float(), is_double(). PHP Infinity. Funcțiile PHP: is_finite(), is_infinite(). Funcția PHP var_dump().

PHP Floats

Un float este un număr cu un punct zecimal sau un număr în formă exponențială.

2.0, 256.4, 10.358, 7.64E + 5, 5.56E-5 sunt toate floats.

Tipul de date (data type) float poate stoca de obicei o valoare de până la 1.7976931348623E + 308 (dependentă de platformă) și are o precizie maximă de 14 cifre.

PHP are următoarele funcții pentru a verifica dacă tipul unei variabile este float:
 
  • is_float()
  • is_double() - alias of is_float ()

Exemplu:

Verificați dacă tipul unei variabile este float:
 
<?php
$x = 10.365;
var_dump(is_float($x));
?>

PHP Infinity

O valoare numerică mai mare decât PHP_FLOAT_MAX este considerată infinită.

PHP are următoarele funcții pentru a verifica dacă o valoare numerică este finită sau infinită:
 
  • is_finite()
  • is_infinite()

Cu toate acestea, funcția PHP var_dump() returnează tipul (data type) și valoarea datelor:

Exemplu:

Verificați dacă o valoare numerică este finită sau infinită:
 
<?php
$x = 1.9e411;
var_dump($x);
?>

Numere PHP. PHP NaN. Funcția PHP is_nan(). Funcția PHP var_dump(). Șiruri numerice PHP.

PHP NaN

NaN semnifică Not Number.

NaN este utilizat pentru operații matematice imposibile.

PHP are următoarele funcții pentru a verifica dacă o valoare nu este un număr:
 
  • is_nan()

Cu toate acestea, funcția PHP var_dump() returnează tipul și valoarea datelor:

Exemplu:

Calculul invalid va returna o valoare NaN:
 
<?php
$x = acos(8);
var_dump($x);
?>

Șiruri numerice PHP (PHP Numerical Strings)

Funcția PHP is_numeric() poate fi utilizată pentru a afla dacă o variabilă este numerică. Funcția returnează true dacă variabila este un număr sau un șir numeric (numeric string), false altfel.

Exemplu:

Verificați dacă variabila este numerică:
 
<?php
$x = 5985;
var_dump(is_numeric($x));

$x = "5985";
var_dump(is_numeric($x));

$x = "59.85" + 100;
var_dump(is_numeric($x));

$x = "Hello";
var_dump(is_numeric($x));
?>

Notă: De la PHP 7.0: Funcția is_numeric() va returna FALSE pentru șirurile numerice (numeric strings) în formă hexazecimală (de exemplu, 0xf4c3b00c), deoarece nu mai sunt considerate șiruri numerice (numeric strings).

Numere PHP. PHP Conversia tipurilor de date string si float la integer. Funcțiile int(), integer() sau intval().

PHP Conversia tipurilor de date string si float la integer (PHP Casting Strings and Floats to Integers)

Uneori, trebuie să convertiți o valoare numerică într-un alt tip de date (data type).

Funcția int(), integer() sau intval() sunt adesea folosite pentru a converti o valoare (value) într-un număr întreg (integer).

Exemplu:

Convertiți float și string la integer:
 
<?php

// Cast float to int
$x = 23465.768;
$int_cast = (int)$x;
echo $int_cast;

echo "<br>";

// Cast string to int
$x = "23465.768";
$int_cast = (int)$x;
echo $int_cast;
?>

Numere PHP. Conversie automată de tipuri de date. Numere întregi PHP. Funcțiile PHP: is_int(), is_integer(), is_long().Reguli pentru numere întregi.

Numere PHP

În acest capitol vom analiza în profunzime Integers, Floats și Number Strings.

Numere PHP

Un lucru de remarcat cu privire la PHP este că oferă conversie automată de tip de date (automatic data type conversion).

Deci, dacă atribuiți o valoare integer (valoare întreagă) unei variabile, tipul acelei variabile va fi automat un integer (număr întreg).

Apoi, dacă atribuiți un string (șir) aceleiași variabile, tipul se va schimba la un string (șir).

Această conversie automată îți poate sparge codul.

Numere întregi PHP (PHP Integers)

Un integer (număr întreg) este un număr fără nicio parte zecimală.

2, 256, -256, 10358, -179567 sunt integers (întregi). În timp ce 7.56, 10.0, 150.67 sunt floats.

Deci, un tip de date întreg (integer data type) este un număr non-zecimal cuprins între -2147483648 și 2147483647. O valoare mai mare (sau mai mică) decât aceasta, va fi stocată ca float, deoarece depășește limita unui integer (număr întreg).

Un alt lucru important de știut este că, chiar dacă 4*2,5 este 10, rezultatul este stocat sub formă de float, deoarece unul dintre operanzi este un float (2.5).

Iată câteva reguli pentru integers (numere întregi):
 
  • Un număr întreg (integer) trebuie să aibă cel puțin o cifră
  • Un număr întreg (integer) nu trebuie să aibă o zecimală
  • Un număr întreg (integer) poate fi pozitiv sau negativ
  • Numerele întregi pot fi specificate în trei formate: zecimale (baza 10), hexazecimale (baza 16 - prefix 0x) sau octale (baza 8 - prefix 0)

PHP are următoarele funcții pentru a verifica dacă tipul unei variabile este integer (întreg):
 
  • is_int()
  • is_integer() - alias of is_int()
  • is_long() - alias of is_int()

Verificați dacă tipul unei variabile este integer (întreg):

Exemplu:
 
<?php
$x = 5985;
var_dump(is_int($x));
$x = 59.85;
var_dump(is_int($x));
?>

Constante PHP. Creați o constantă PHP. Funcția define(). Sintaxă: define(name, value, case-insensitive). Parametrii: name, value, case-insensitive.

Constante PHP

Constantele sunt ca variabilele, cu excepția faptului că, odată definite, nu pot fi modificate sau nedefinite.

Constante PHP

O constantă este un identificator (nume) pentru o valoare simplă. Valoarea nu poate fi modificată în timpul scriptului.

Un nume constant valabil începe cu o literă sau underscore (fără semn $ înainte de numele constant).

Notă: Spre deosebire de variabile, constantele sunt automat globale pe întregul script.

Creați o constantă PHP

Pentru a crea o constantă, utilizați funcția define().

Sintaxă

define(name, value, case-insensitive)

Parametrii:
 
  • name: Specifică numele constantei.
  • value: Specifică valoarea constantei.
  • case-insensitive: Specifică dacă numele constant trebuie să fie case-insensitive. Implicit este fals.

Exemplu:

Creați o constantă cu un nume case-sensitive:
 
<?php
define("SALUT", "Bine ați venit la lectii-virtuale.ro!");
echo SALUT;
?>

Exemplu:

Creați o constantă cu un nume case-insensitive:
 
<?php
define("SALUT", "Bine ați venit la lectii-virtuale.ro!", true);
echo salut;
?>

Constante PHP. PHP Array-uri constante. Constantele sunt globale.

PHP Array-uri constante (PHP Constant Arrays)

În PHP7, puteți crea o constantă Array folosind funcția define().

Exemplu:

Creați o constantă Array:
 
<?php
define("cars", [
    "Alfa Romeo",
    "BMW",
    "Toyota"
]);
echo cars[0];
?>

Constantele sunt globale

Constantele sunt automat globale și pot fi utilizate pe întregul script.

Exemplu:

Acest exemplu utilizează o constantă în interiorul unei funcții, chiar dacă este definită în afara funcției:
 
<?php
define("SALUT", "Bine ați venit la lectii-virtuale.ro!");

function myTest() {
    echo SALUT;
}
 
myTest();
?>

Operatori PHP. Operatori PHP de comparație. Operatori PHP de creștere / descreștere.

Operatori PHP de comparație

Operatorii PHP de comparație sunt folosiți pentru a compara două valori (număr sau șir/number or string):

 
Operator Nume Exemplu Rezultat  
== Egal $x == $y Returnează true dacă $x este egal cu $y  
=== Identic $x === $y Returnează true dacă $x este egal cu $y și sunt de același tip  
!= Inegal $x != $y Returnează true dacă $x nu este egal cu $y  
<> Diferit $x <> $y Returnează true dacă $x nu este egal cu $y  
!== Nu este identic $x !== $y Returnează true dacă $x nu este egal cu $y sau nu sunt de același tip  
> Mai mare decât $x > $y Returnează true dacă $x este mai mare decât $y  
< Mai mic decât $x < $y Returnează true dacă $x este mai mic decât $y  
>= Mai mare decât sau egal cu $x >= $y Returnează true dacă $x este mai mare decât sau egal cu $y  
<= Mai mic decât sau egal cu $x <= $y Returnează true dacă $x este mai mic decât sau egal cu $y  
<=> Spaceship (Spațial) $x <=> $y Returnează un număr întreg (integer) mai mic decât, egal sau mai mare decât zero, în funcție de dacă $x este mai mic decât, egal sau mai mare decât $y. Introducere în PHP 7.  


Operatori PHP de creștere / descreștere

Operatorii PHP de incrementare sunt folosiți pentru a crește valoarea unei variabile.

Operatorii PHP de descreștere sunt folosiți pentru a descrește valoarea unei variabile.

 
Operator Nume Descriere  
++$x Pre-increment Crește $x o dată, apoi returnează $x  
$x++ Post-increment Returnează $x, apoi crește $x o dată  
--$x Pre-decrement Descrește $x o dată, apoi returnează $x  
$x-- Post-decrement Returnează $x, apoi descrește $x o dată  

Operatori PHP. Operatori PHP Aritmetici. Operatori PHP de atribuire.

Operatori PHP

Operatorii sunt folosiți pentru a efectua operații cu variabile și valori.

PHP împarte operatorii în următoarele grupuri:
 
  • Operatori de aritmetică
  • Operatori de atribuire
  • Operatori de comparație
  • Operatori de creștere / descreștere
  • Operatori logici
  • Operatori cu șiruri (string)
  • Operatori de matrice (array)
  • Operatori de atribuire condiționată

Operatori PHP Aritmetici

Operatorii PHP aritmetici sunt folosiți cu valori numerice pentru a efectua operațiuni aritmetice comune, cum ar fi adunarea, scăderea, înmulțirea etc.
 
Operator Nume Exemplu Rezultat
+ Adunare $x + $y Suma dintre $x și $y  
- Scădere $x - $y Diferența dintre $x și $y  
* Înmulțire $x * $y Produsul dintre $x și $y  
/ Împărțire $x / $y Împărțirea dintre $x și $y  
% Coeficient $x % $y Restul împărțirii lui $x la $y  
** Exponențiere $x ** $y Rezultatul creșterii lui $x la puterea $y  


Operatori PHP de atribuire

Operatorii PHP de atribuire sunt folosiți cu valori numerice pentru a scrie o valoare a unei variabile.

Operatorul de atribuire de bază în PHP este "=". Înseamnă că operandul stâng este setat la valoarea expresiei de atribuire din dreapta.
 
Atribuire La fel ca... Descriere  
x = y x = y Operandul stâng este setat la valoarea expresiei din dreapta  
x += y x = x + y Adunare  
x -= y x = x - y Scădere  
x *= y x = x * y Înmulțire  
x /= y x = x / y Diviziune  
x %= y x = x % y Coeficient  

Operatori PHP. Operatori logici PHP. Operatori PHP String.

Operatori logici PHP

Operatorii logici PHP sunt folosiți pentru a combina instrucțiuni condiționale.

 
Operator Nume Exemplu Rezultat  
and And $x and $y True dacă atât $x cât și $y sunt adevărate  
or Or $x or $y True dacă fie $x fie $y este adevărat  
xor Xor $x xor $y True dacă fie $x fie $y este adevărat, dar nu ambele  
&& And $x && $y True dacă atât $x cât și $y sunt adevărate  
|| Or $x || $y True dacă fie $x fie $y este adevărat  
! Not !$x True dacă $x nu este adevărat  


Operatori PHP String

PHP are doi operatori special conceputi pentru string-uri.

 
Operator Nume Exemplu Rezultat  
. Concatenare $txt1 . $txt2 Concatenarea lui $txt1 și $txt2  
.= Alocare de concatenare $txt1 .= $txt2 Aplică $txt2 la $txt1  

Operatori PHP. Operatori Array PHP. Operatori PHP de atribuire condiționată.

Operatori Array PHP

Operatorii Array PHP sunt folosiți pentru a compara matricile.

 
Operator Nume Exemplu Rezultat  
+ Uniune $x + $y Uniunea lui $x cu $y  
== Egalitate $x == $y Returnează true dacă $x și $y au aceleași perechi de chei/valori  
=== Identitate $x === $y Returnează true dacă $x și $y au aceleași perechi de chei/valori în aceeași ordine și în aceleași tipuri  
!= Inegalitate $x != $y Returnează true dacă $x nu este egal cu $y  
<> Inegalitate $x <> $y Returnează true dacă $x nu este egal cu $y  
!== Non-identitate $x !== $y Returnează true dacă $x nu este identic cu $y  


Operatori PHP de atribuire condiționată

Operatorii PHP de alocare condiționată sunt folosiți pentru a seta o valoare în funcție de condiții:

 
Operator Nume Exemplu Rezultat  
?: Ternar $x = expr1 ? expr2 : expr3 Returnează valoarea $x.
Valoarea lui $x este expr2 dacă expr1 = TRUE.
Valoarea lui $x este expr3 dacă expr1 = FALSE
 
?? Null coalescing $x = expr1 ?? expr2 Returnează valoarea $x.
TValoarea lui $x este expr1 dacă expr1 există și nu este NULL.
Dacă expr1 nu există, sau este NULL, valoarea lui $x este expr2.
Introducere în PHP 7
 

Instrucțiunile PHP if...else...elseif. ​​​​​​​Instrucțiunea PHP -  if...elseif...else. Sintaxă. Instrucțiunea PHP- switch.

Instrucțiunea PHP -  if...elseif...else

Instrucțiunea if ... elseif ... else execută coduri diferite pentru mai mult de două condiții.

Sintaxă
 
if (condition) {
     cod care trebuie executat dacă această condiție este adevărată (true);
} elseif (condition) {
     cod care trebuie executat dacă prima condiție este falsă (false) și această condiție este adevărată (true);
} else {
    cod care trebuie executat dacă toate condițiile sunt false (false);
}

Exemplu:

Rezultat "Bună dimineața!" dacă ora actuală este mai mică de 10 și „ Să aveți o zi bună!” dacă ora actuală este mai mică de 20. În caz contrar, se va afișa „Noapte bună!”:

 
<?php
$t = date("H");

if ($t < "10") {
    echo "Bună dimineața!";
} elseif ($t < "20") {
    echo "Să aveți o zi bună!";
} else {
    echo "Noapte bună!";
}
?>

Instrucțiunea PHP- switch 

Instrucțiunea switch va fi explicată în capitolul următor.

Instrucțiunile PHP if...else...elseif. Instrucțiunea PHP - The if...else. Sintaxă.

Instrucțiunea PHP - The if...else 

Instrucțiunea if ... else execută un cod dacă o condiție este adevărată (true) și un alt cod dacă această condiție este falsă (false).

Sintaxă
 
if (condition) {
    cod care trebuie executat dacă condiția este adevărată (true);
} else {
    cod care trebuie executat dacă condiția este falsă (false);
}

Exemplu:

Rezultat "Să aveți o zi bună!" dacă ora actuală este mai mică de 20 și „Noapte bună!” in caz contrar:
 
<?php
$t = date("H");

if ($t < "20") {
    echo "Să aveți o zi bună!";
} else {
    echo "Noapte bună!";
}
?>

Instrucțiunile PHP if...else...elseif. Instrucțiuni condiționale PHP. PHP - Instrucțiunea if. Sintaxă.

Instrucțiunile PHP if...else...elseif

Instrucțiunile condiționale sunt utilizate pentru a efectua diferite acțiuni bazate pe condiții diferite.

Instrucțiuni condiționale PHP

Foarte des când scrieți cod, doriți să efectuați diferite acțiuni pentru diferite condiții. Pentru a face acest lucru puteți utiliza în codul dvs. instrucțiuni condiționale.

În PHP avem următoarele instrucțiuni condiționale:
 
  • if statement - execută unele coduri dacă o condiție este adevărată (true).
  • if ... else statement - execută ceva cod dacă o condiție este adevărată (true) și un alt cod dacă această condiție este falsă (false).
  • if ... elseif ... else statement - execută coduri diferite pentru mai mult de două condiții.
  • switch statement - selectează unul dintre numeroasele blocuri de cod care trebuie executate.

PHP - Instrucțiunea if

Instrucțiunea if execută un cod dacă o condiție este adevărată (true).

Sintaxă
 
if (condition) {
    cod care trebuie executat dacă condiția este adevărată (true);
}

Exemplu:

Rezultat "Să aveți o zi bună!" dacă ora curentă (HOUR) este mai mică de 20:
 
<?php
$t = date("H");

if ($t < "20") {
    echo "Să aveți o zi bună!";
}
?>

Instrucțiunea PHP switch. Sintaxă.

Instrucțiunea PHP switch

Instrucțiunea switch este utilizată pentru a efectua diferite acțiuni bazate pe condiții diferite.

Instrucțiunea PHP switch

Utilizați instrucțiunea switch pentru a selecta unul dintre numeroasele blocuri de cod care urmează să fie executate.

Sintaxă
 
switch (n) {
    case label1:
         cod care trebuie executat dacă n=label1;
        break;
    case label2:
         cod care trebuie executat dacă n=label2;
        break;
    case label3:
         cod care trebuie executat dacă n=label3;
        break;
    ...
    default:
         cod care trebuie executat dacă n este diferit de toate labels;
}

Așa funcționează: Mai întâi avem o singură expresie n (cel mai adesea o variabilă), care este evaluată o singură dată. Valoarea expresiei este apoi comparată cu valorile pentru fiecare caz din structură. Dacă există o potrivire, blocul de cod asociat cu acest caz este executat. Folosiți pauză pentru a împiedica automat rularea codului în următorul caz. Instrucțiunea implicită este utilizată dacă nu se găsește nicio potrivire.

Exemplu:
 
<?php
$favcolor = "roșu";

switch ($favcolor) {
    case "roșu":
        echo "Culoarea ta preferată este roșu!";
        break;
    case "albastru":
        echo "Culoarea ta preferată este albastru!";
        break;
    case "verde":
        echo "Culoarea ta preferată este verde!";
        break;
    default:
        echo "Culoarea ta preferată nu este nici roșu, nici albastru, nici verde!";
}
?>

Bucle PHP. Tipuri de buclă: while, do ... while, for, foreach.

Bucle PHP (PHP Loops)

În capitolele următoare veți învăța cum să repetați codul folosind bucle (loops) în PHP.

Bucle PHP (PHP Loops)

Adesea, atunci când scrieți cod, doriți ca același block de cod să fie difuzat de mai multe ori un anumit număr de ori. Deci, în loc să adăugăm mai multe linii de cod aproape egale într-un script, putem folosi bucle (loops).

Buclele (loops) sunt utilizate pentru a executa același block de cod din nou și din nou, atâta timp cât o anumită condiție este adevărată (true).

În PHP, avem următoarele tipuri de buclă (loop types):
 
  • while - buclează (loops) un block de cod atâta timp cât condiția specificată este adevărată (true).
  • do ... while - se buclează (loops) o dată printr-un block de cod, apoi se repetă bucla (loop) atâta timp cât condiția specificată este adevărată (true).
  • for - se buclează (loops) printr-un block de cod de un număr specificat de ori.
  • foreach - se buclează (loops) printr-un block de cod pentru fiecare element dintr-un tablou.

Capitolele următoare vor explica și vor oferi exemple pentru fiecare tip de buclă (loop type).

Bucle PHP. PHP Bucla foreach. Sintaxă. Exemple.

PHP bucla foreach (PHP foreach Loop)

Bucla foreach - Buclează (loops) printr-un block de cod pentru fiecare element dintr-un tablou (array).

PHP bucla foreach (PHP foreach Loop)

Bucla foreach funcționează numai pe tablouri (arrays) și este utilizată pentru a bucla (loop) fiecare pereche cheie / valoare (key/value ) dintr-un tablou (array).

Sintaxă
 
foreach ($array as $value) {
  cod de executat;
}

Pentru fiecare iterație de buclă (loop iteration), valoarea elementului array curent este atribuită lui $value, iar indicatorul tabloului (array) este mutat singur până când ajunge la ultimul element de matrice (element array).

Exemple

Următorul exemplu va emite valorile tabloului dat (array) ($colors):

Exemplu:
 
<?php
$colors = array("red", "green", "blue", "yellow");

foreach ($colors as $value) {
  echo "$value <br>";
}
?>

Următorul exemplu va emite (output) atât cheile (keys) cât și valorile tabloului dat (values of the given array) ($age):

Exemplu:
 
<?php
$age = array("Ion"=>"35", "Petre"=>"37", "Tudor"=>"43");

foreach($age as $x => $val) {
  echo "$x = $val<br>";
}
?>

Veți afla mai multe despre tablouri (arrays) în capitolul PHP Arrays.

Bucle PHP. PHP Bucla while. Sintaxă. Exemple.

PHP bucla while (PHP while Loop)

Bucla while - Bucle
printr-un block de cod atâta timp cât condiția specificată este adevărată (true).

PHP bucla while

Bucla while
execută un block de cod atâta timp cât condiția specificată este adevărată (true).

Sintaxă

 
while (condition is true) {
     cod de executat;
}

Exemple

Exemplul de mai jos afișează numerele de la 1 la 5:

Exemplu:
 
<?php
$x = 1;

while($x <= 5) {
    echo "Numărul este: $x <br>";
    $x++;
}
?>

Exemplu explicat:
 
  • $x = 1; - Inițializați contorul de bucle (loop counter) ($x) și setați valoarea de pornire la 1.
  • $x <= 5 - Continuați bucla (loop) atâta timp cât $x este mai mică sau egală cu 5.
  • $X ++; - Măriți valoarea contorului buclei (loop counter) cu 1 pentru fiecare iterație.

Acest exemplu numără până la 100 din zece în zece:

Exemplu:
 
<?php
$x = 0;

while($x <= 100) {
    echo "Numărul este: $x <br>";
    $x+=10;
}
?>

Exemplu explicat:
 
  • $x = 0; - Inițializați contorul buclei (loop counter) ($x) și setați valoarea de pornire la 0.
  • $x <= 100 - Continuați bucla (loop) atât timp cât $x este mai mic sau egal cu 100.
  • $X + = 10; - Măriți valoarea contorului buclei (loop counter) cu 10 pentru fiecare iterație.

Bucle PHP. PHP Bucla do while. Sintaxă. Exemple.

PHP bucla do while (PHP do while Loop)

Bucla do ... while - Buclează (loops) o dată printr-un block de cod, apoi repetă bucla (loop) atâta timp cât condiția specificată este adevărată (true).

PHP bucla do while (PHP do while Loop)

Bucla do ... while va executa întotdeauna blocul de cod o dată, apoi va verifica starea și va repeta bucla (loop) cât timp (while) condiția specificată este adevărată (true).

Sintaxă
 
do {
    cod de executat;
} while (condition is true);

Exemple

Exemplul de mai jos stabilește prima variabilă $x la 1 ($x = 1). Apoi, bucla do while (do while loop) va scrie o anumită ieșire, apoi va crește variabila $x cu 1. Apoi, starea este bifată ($x este mai mică sau egală cu 5?), Iar bucla (loop) va continua să funcționeze atâta timp cât $x este mai mică sau egală cu 5:

Exemplu:
 
<?php
$x = 1;

do {
    echo "Numărul este: $x <br>";
    $x++;
} while ($x <= 5);
?>

Notă: În bucla do...while (do...while loop) în timp ce condiția este testată DUPĂ executarea instrucțiunilor din buclă (loop). Aceasta înseamnă că bucla do ... while (do...while loop) își va executa instrucțiunile cel puțin o dată, chiar dacă condiția este falsă (false). Vezi exemplul de mai jos.

Acest exemplu stabilește variabila $x la 6, apoi rulează bucla (loop), apoi starea este verificată:

Exemplu:
 
<?php
$x = 6;

do {
    echo "Numărul este: $x <br>";
    $x++;
} while ($x <= 5);
?>

Bucle PHP. PHP Bucla for. Sintaxă. Parametri: init counter, test counter, increment counter. Exemple.

PHP bucla for. (PHP for Loop)

Bucla for -  Buclează (loops) printr-un block de cod de un număr specificat de ori.

PHP bucla for. (PHP for Loop)

Bucla for se utilizează atunci când știi în prealabil de câte ori ar trebui să ruleze scriptul.

Sintaxă
 
for (init counter; test counter; increment counter) {
    cod care trebuie executat pentru fiecare iterație;
}

Parametri:
 
  • init counter: Initializarea valorii contorului buclei (loop counter).
  • test counter: evaluare pentru fiecare iterație de buclă (loop iteration). Dacă se evaluează la TRUE, bucla (loop) continuă. Dacă se evaluează la FALSE, bucla (loop) se termină.
  • increment counter: Crește valoarea contorului buclei (loop counter).

Exemple

Exemplul de mai jos afișează numerele de la 0 la 10:

Exemplu:
 
<?php
for ($x = 0; $x <= 10; $x++) {
    echo "Numărul este: $x <br>";
}
?>

Exemplu explicat:
 
  • $x = 0; - Inițializați contorul buclei (loop counter) ($x) și setați valoarea de pornire la 0.
  • $x <= 10; - Continuați bucla (loop) atâta timp cât $x este mai mic sau egal cu 10.
  • $x ++ - Măriți valoarea contorului buclei (loop counter) cu 1 pentru fiecare iterație.

Acest exemplu numără până la 100 din zece în zece:

Exemplu:
 
<?php
for ($x = 0; $x <= 100; $x+=10) {
    echo "Numărul este: $x <br>";
}
?>

Exemplu explicat:
 
  • $x = 0; - Inițializați contorul buclei (loop counter) ($x) și setați valoarea de pornire la 0.
  • $x <= 100; - Continuați bucla (loop) atâta timp cât $x este mai mic sau egal cu 100.
  • $x + = 10 - Măriți valoarea contorului buclei (loop counter) cu 10 pentru fiecare iterație.

Funcții PHP. Funcții încorporate în PHP. Funcții definite de utilizator în PHP. Sintaxă.

Funcții PHP

Puterea reală a PHP provine din funcțiile sale.

PHP are peste 1000 de funcții încorporate (built-in) și, în plus, vă puteți crea propriile funcții personalizate.

Funcții încorporate în PHP (PHP Built-in Functions)

PHP are peste 1000 de funcții încorporate (built-in) care pot fi apelate direct, dintr-un script, pentru a efectua o sarcină specifică.

Funcții definite de utilizator în PHP

Pe lângă funcțiile PHP încorporate (built-in), este posibil să vă creați propriile funcții.
 
  • O funcție este un block de declarații care poate fi utilizat în mod repetat într-un program.
  • O funcție nu se va executa automat atunci când se încarcă o pagină.
  • O funcție va fi executată de un apel către funcție.

Creați o funcție definită de utilizator în PHP

O declarație de funcție definită de utilizator (user-defined function) începe cu funcția cuvânt:

Sintaxă
 
function functionName() {
    cod de executat;
}

Notă: Un nume de funcție trebuie să înceapă cu o literă sau o subliniere (underscore). Numele funcțiilor NU sunt case-sensitive.

Sfat: Dați funcției un nume care să reflecte ceea ce face funcția!

În exemplul de mai jos, creem o funcție numită "writeMsg()". Paranteza ondulată de deschidere ({) indică începutul codului funcției, iar paranteza ondulată de închidere (}) indică sfârșitul codului funcției. Funcția întoarce (outputs) „Hello world!”. Pentru a apela funcția, trebuie doar să scrieți numele ei urmată de paranteze ():

Exemplu:
<?php
function writeMsg() {
    echo "Hello world!";
}
writeMsg(); // apelați funcția
?>

Funcții PHP. Argumentele funcției PHP. Funcție cu un argument. Funcție cu două argumente.

Argumentele funcției PHP

Informațiile pot fi transmise funcțiilor prin argumente. Un argument este la fel ca o variabilă.

Argumentele sunt specificate după numele funcției, în interiorul parantezelor. Puteți adăuga oricâte argumente doriți, doar separați-le cu virgulă.

Următorul exemplu are o funcție cu un argument ($fname). Când se numește funcția familyName(), de asemenea, trecem de-a lungul unui nume (de exemplu, Ionescu) și numele este folosit în interiorul funcției, care produce (outputs) mai multe prenume diferite, dar un nume egal:

Exemplu:
 
<?php
function familyName($fname) {
    echo "$fname Refsnes.<br>";
}

familyName("Ionescu");
familyName("Popescu");
familyName("Georgescu");
familyName("Filipescu");
familyName("Zinescu");
?>

Următorul exemplu are o funcție cu două argumente ($fname și $year):

Exemplu:
 
<?php
function familyName($fname, $year) {
    echo "$fname Refsnes.  Născut în $year <br>";
}

familyName("Ionescu", "1975");
familyName("Popescu", "1978");
familyName("Zinescu", "1983");
?>

Funcții PHP. PHP este un limbaj tiparit mai puțin.. Declarații type. Declarația strict. Declarația strict_types=1.

PHP este un limbaj tiparit mai puțin. (PHP is a Loosely Typed Language)

În exemplul precedent, observați că nu trebuie să spunem PHP-ului ce tip de date (data type) este variabila.

PHP asociază automat un tip de date (data type) variabilei, în funcție de valoarea acesteia. Deoarece tipurile de date (data types) nu sunt setate într-un sens strict, puteți face lucruri precum adăugarea unui șir (string) la un număr întreg (integer) fără a provoca o eroare.

În PHP 7, au fost adăugate declarații de tip (type declarations). Aceasta ne oferă opțiunea de a specifica tipul de date (data type) preconizat la declararea unei funcții, iar prin adăugarea declarației strict, va arunca o „Fatal Error” dacă nu există o nepotrivire a tipului de date (data type).

În exemplul următor, încercăm să trimitem atât un număr cât și un șir (string) la funcție fără a folosi declarația strict:

Exemplu:
 
<?php
function addNumbers(int $a, int $b) {
    return $a + $b;
}
echo addNumbers(5, "5 days");
// deoarece NU este activat strict, „5 days” este schimbat în int(5) și va întoarce 10
?>

Pentru a specifica strict trebuie să setăm declarația (strict_types=1);. Aceasta trebuie să fie chiar în prima linie a fișierului PHP.

În exemplul următor încercăm să trimitem atât un număr cât și un șir (string) la funcție, dar aici am adăugat declarația strict:

Exemplu:
 
<?php declare(strict_types=1); // cerință strictă

function addNumbers(int $a, int $b) {
    return $a + $b;
}
echo addNumbers(5, "5 days");
// din moment ce strict este activat și „5 days” nu este un număr întreg (integer), va fi afișată o eroare
?>
Declarația strict obligă lucrurile să fie utilizate în modul dorit.

Funcții PHP. PHP valoarea argumentului default. Funcția setHeight(). Funcții PHP - Returnarea valorilor. Instrucțiunea return. PHP Declarații de tip return.

PHP valoarea argumentului default (PHP Default Argument Value)

Următorul exemplu arată cum se utilizează un parametru default (parametru impicit). Dacă numim funcția setHeight() fără argumente, aceasta are valoarea default (valoarea implicită) ca argument:

Exemplu:
 
<?php declare(strict_types=1); // strict requirement
function setHeight(int $minheight = 50) {
    echo "Înălțimea este: $minheight <br>";
}

setHeight(350);
setHeight(); // vom folosi valoarea default (valoarea implicită) of 50
setHeight(135);
setHeight(80);
?>

Funcții PHP - Returnarea valorilor

Pentru a permite unei funcții să returneze o valoare, utilizați instrucțiunea return:

Exemplu:
 
<?php declare(strict_types=1); // cerință strictă
function sum(int $x, int $y) {
    $z = $x + $y;
    return $z;
}

echo "5 + 10 = " . sum(5, 10) . "<br>";
echo "7 + 13 = " . sum(7, 13) . "<br>";
echo "2 + 4 = " . sum(2, 4);
?>

PHP Declarații de tip return (PHP Return Type Declarations)

PHP 7 acceptă, de asemenea, declarații de tip (Type Declarations) pentru instrucțiunea return. Ca și în cazul declarației de tip (type declaration) pentru argumentele funcției, activând cerința strictă, va returna o „Fatal Error” ca nepotrivire de tip (type mismatch).

Pentru a declara un tip (type) pentru funcția returnată, adăugați două puncte (:) și tipul (type) chiar înainte de paranteza ondulată de deschidere ({) la declararea funcției.

În următorul exemplu, specificăm tipul return (return type) pentru funcție:

Exemplu:
 
<?php declare(strict_types=1); // cerință strictă
function addNumbers(float $a, float $b) : float {
    return $a + $b;
}
echo addNumbers(1.2, 5.2);
?>

Puteți specifica un tip de returnare (return type) diferit de cel al argumentelor, dar asigurați-vă că returnarea este cea corectă:

Exemplu:
 
<?php declare(strict_types=1); // cerință strictă
function addNumbers(float $a, float $b) : int {
    return (int)($a + $b);
}
echo addNumbers(1.2, 5.2);
?>

PHP Arrays. Ce este un array? Creați un array în PHP. Obțineți Lungimea unui array - Funcția count(). Referință completă pentru matricea (array) PHP.

PHP Arrays

Un array (tablou) stochează mai multe valori într-o singură variabilă:

Exemplu:
 
<?php
$cars = array("Volvo", "BMW", "Toyota");
echo "Îmi place " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

Ce este un Array?

Un array (tablou) este o variabilă specială, care poate reține mai mult de o valoare simultan.

Dacă aveți o listă de articole (de exemplu, o listă cu nume de mașini), stocarea mașinilor în variabile unice ar putea arăta astfel:
 
$cars1 = "Volvo";
$cars2 = "BMW";
$cars3 = "Toyota";

Cu toate acestea, ce se întâmplă dacă doriți să vă buclați (loop) între mașini și să găsiți una specifică? Și dacă nu ai avea 3 mașini, ci 300?

Soluția este să creezi un array (tablou)!

Un array (tablou) poate reține multe valori sub un singur nume și puteți accesa valorile făcând referire la un număr de index.

Creați un array (o matrice) în PHP

În PHP, funcția array() este utilizată pentru a crea un tablou (array):
 
array();

În PHP, există trei tipuri de matrice (arrays):
 
  • Matrice indexate (Indexed arrays) - Arrays cu un index numeric
  • Matrice asociative (Associative arrays) - Arrays cu chei (keys) numite
  • Matricele multidimensionale (Multidimensional arrays) - Arrays care conțin unul sau mai multe tablouri (arrays)

Obțineți Lungimea unui Array - Funcția count()

Funcția count() este utilizată pentru a returna lungimea (numărul de elemente) unui array (tablou):
 
<?php
$cars = array("Volvo", "BMW", "Toyota");
echo count($cars);
?>

PHP Arrays. Sortare array în ordine descrescătoare - rsort(). Sortare array în ordine crescătoare, în funcție de valoarea - asort(). Sortare array în ordine crescătoare, în funcție de cheia - ksort().

PHP - Funcții de sortare pentru array

Sortare Array în ordine descrescătoare - rsort()


Următorul exemplu sortează elementele tabloului (array) $cars în ordine alfabetică descrescătoare:

Exemplu:
 
<?php
$cars = array("Volvo", "BMW", "Toyota");
rsort($cars);
?>

Următorul exemplu sortează elementele tabloului (array$numbers în ordine numerică descrescătoare:

Exemplu:
 
<?php
$numbers = array(4, 6, 2, 22, 11);
rsort($numbers);
?>


Sortare Array (ordine crescătoare), în funcție de valoarea - asort()

Următorul exemplu sortează un tablou asociativ (associative array) în ordine crescătoare, în funcție de valoare:

Exemplu:
 
<?php
$age = array("Petre"=>"35", "Ion"=>"37", "Dan"=>"43");
asort($age);
?>


Sortare Array (ordine crescătoare), în funcție de cheia - ksort()

Următorul exemplu sortează un tablou asociativ (associative array) în ordine crescătoare, în funcție de cheie:

Exemplu:
 
<?php
$age = array("Petre"=>"35", "Ion"=>"37", "Dan"=>"43");
ksort($age);
?>


Sortare Array (ordine descrescătoare), în funcție de valoarea - arsort()

Următorul exemplu sortează un tablou asociativ (associative array) în ordine descrescătoare, în funcție de valoare:

Exemplu:
 
<?php
$age = array("Petre"=>"35", "Ion"=>"37", "Dan"=>"43");
arsort($age);
?>


Sortare Array (ordine descrescătoare), în funcție de cheia - krsort()

Următorul exemplu sortează un tablou asociativ (associative array) în ordine descrescătoare, în funcție de cheie:

Exemplu:
 
<?php
$age = array("Petre"=>"35", "Ion"=>"37", "Dan"=>"43");
krsort($age);
?>

PHP Arrays. PHP matrice indexate. Buclă printr-o matrice indexată.

PHP matrice indexate (PHP Indexed Arrays)

Există două moduri de a crea tablouri indexate (indexed arrays):

Indexul poate fi atribuit automat (indexul începe întotdeauna de la 0), astfel:
 
$cars = array("Volvo", "BMW", "Toyota");

sau indexul poate fi atribuit manual:
 
$cars[0] = "Volvo";
$cars[1] = "BMW";
$cars[2] = "Toyota";

Următorul exemplu creează un tablou indexat (indexed array) numit $cars, îi atribuie trei elemente și apoi tipărește un text care conține valorile tabloului (array values):

Exemplu:
 
<?php
$cars = array("Volvo", "BMW", "Toyota");
echo "Îmi place " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

Buclă printr-o matrice indexată (Loop Through an Indexed Array)

Pentru a parcurge și tipări toate valorile unui tablou indexat (indexed array), puteți utiliza o buclă (loop) for, astfel:

Exemplu:
 
<?php
$cars = array("Volvo", "BMW", "Toyota");
$arrlength = count($cars);

for($x = 0; $x < $arrlength; $x++) {
    echo $cars[$x];
    echo "<br>";
}
?>

PHP Arrays. PHP matrice asociative. Buclă printr-o matrice asociativă. Bucla foreach.

PHP matrice asociative (PHP Associative Arrays)

Matricele asociative (associative arrays) sunt tablouri (arrays) care folosesc chei numite (named keys) pe care le atribuiți lor.

Există două moduri de a crea un tablou asociativ (associative array):
 
$age = array("Petre"=>"35", "Ion"=>"37", "Dan"=>"43");

sau:
 
$age['Petre'] = "35";
$age['Ion'] = "37";
$age['Dan'] = "43";

Cheile denumite (named keys) pot fi apoi utilizate într-un script:

Exemplu:
 
<?php
$age = array("Petre"=>"35", "Ion"=>"37", "Dan"=>"43");
echo "Petre are " . $age['Petre'] . " ani.";
?>

Buclă printr-o matrice asociativă (Loop Through an Associative Array)

Pentru a parcurge și tipări toate valorile unui tablou asociativ (associative array), puteți utiliza o buclă (loopforeach, astfel:

Exemplu:
 
<?php
$age = array("Petre"=>"35", "Ion"=>"37", "Dan"=>"43");

foreach($age as $x => $x_value) {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
?>

PHP Arrays. PHP matrice multidimensionale. PHP - Arrayuri multidimensionale. Tablou bidimensional. Tablou tridimensional. PHP - Matricele bidimensionale.

PHP matrice multidimensionale (PHP Multidimensional Arrays)

În paginile anterioare, am descris matricile (arrays) care reprezintă o listă unică de perechi cheie/valoare (key/value).

Cu toate acestea, uneori doriți să stocați valorile cu mai mult de o cheie. Pentru aceasta, avem tablouri multidimensionale (multidimensional arrays).

PHP - Arrayuri multidimensionale

Un tablou multidimensional (multidimensional array) este un tablou (array) care conține unul sau mai multe tablouri (arrays).

PHP acceptă tablouri multidimensionale (multidimensional arrays) care sunt la două, trei, patru, cinci sau mai multe niveluri. Cu toate acestea, tablourile (arrays) cu mai mult de trei niveluri sunt greu de gestionat pentru majoritatea oamenilor.

Dimensiunea unui tablou (array) indică numărul de indici de care aveți nevoie pentru a selecta un element.
 
  • Pentru un tablou bidimensional (two-dimensional array), aveți nevoie de doi indici pentru a selecta un element
  • Pentru un tablou tridimensional (three-dimensional array), aveți nevoie de trei indici pentru a selecta un element

PHP - Matricele bidimensionale (PHP - Two-dimensional Arrays)

Un tablou bidimensional (two-dimensional array) este un tablou de matrice (array of arrays) (un tablou tridimensional (three-dimensional array) este un tablou de tablouri (arrays of arrays)).

Putem stoca datele dintr-un tabel într-un tablou bidimensional (two-dimensional array), astfel:
 
$cars = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );

Acum, two-dimensional $cars array conține patru tablouri (arrays) și are doi indici: rând și coloană (row and column).

Pentru a avea acces la elementele tabloului (array$cars trebuie să indicăm cei doi indici (rând și coloană/row and column):

Exemplu:
 
<?php
echo $cars[0][0].": În stoc: ".$cars[0][1].", sold: ".$cars[0][2].".<br>";
echo $cars[1][0].": În stoc: ".$cars[1][1].", sold: ".$cars[1][2].".<br>";
echo $cars[2][0].": În stoc: ".$cars[2][1].", sold: ".$cars[2][2].".<br>";
echo $cars[3][0].": În stoc: ".$cars[3][1].", sold: ".$cars[3][2].".<br>";
?>

Putem, de asemenea, să introducem o buclă (loopfor în interiorul altei bucle (loop) for pentru a obține elementele din tabloul (array) $cars  (mai trebuie să indicăm cei doi indici):

Exemplu:
 
<?php
for ($row = 0; $row < 4; $row++) {
  echo "<p><b>Numărul rândului $row</b></p>";
  echo "<ul>";
  for ($col = 0; $col < 3; $col++) {
    echo "<li>".$cars[$row][$col]."</li>";
  }
  echo "</ul>";
}
?>

PHP Arrays. PHP matrice de sortare. PHP - Funcții de sortare pentru matrice. Sortați matricea în ordine crescătoare - sort().

PHP matrice de sortare. (PHP Sorting Arrays)

Elementele dintr-un tablou (array) pot fi sortate în ordine alfabetică sau numerică, descrescător sau crescător.

PHP - Funcții de sortare pentru matrice (PHP - Sort Functions For Arrays)

În acest capitol, vom parcurge următoarele funcții de sortare a tablelor (arrays) PHP:
 
  • sort() - sortează tablourile (arrays) în ordine crescătoare.
  • rsort() - sortează tablourile (arrays) în ordine descrescătoare.
  • asort() - sortează tablourile asociative (associative arrays) în ordine crescătoare, în funcție de valoare.
  • ksort() - sortează matricile asociative (associative arrays) în ordine crescătoare, în funcție de cheie.
  • arsort() - sortează tablourile asociative (associative arrays) în ordine descrescătoare, în funcție de valoare.
  • krsort() - sortează tablourile asociative (associative arrays) în ordine descrescătoare, în funcție de cheie.

Sortați Array în ordine crescătoare - sort()

Următorul exemplu sortează elementele tabloului (array) $cars în ordine alfabetică crescătoare:

Exemplu:
 
<?php
$cars = array("Volvo", "BMW", "Toyota");
sort($cars);
?>

Următorul exemplu sortează elementele tabloului (array) $numbers în ordine numerică crescătoare:

Exemplu:
 
<?php
$numbers = array(4, 6, 2, 22, 11);
sort($numbers);
?>

PHP Variabile Globale - Superglobalele. PHP Superglobal - $GLOBALS. PHP $GLOBALS.

PHP Superglobal - $GLOBALS

Variabilele super globale sunt variabile încorporate (built-in variables), care sunt întotdeauna disponibile în toate domeniile.

PHP $GLOBALS

$GLOBALS este o variabilă super globală PHP, care este utilizată pentru a accesa variabile globale de oriunde în scriptul PHP (de asemenea, din funcții sau metode).

PHP stochează toate variabilele globale într-un tablou (array) numit $GLOBALS [index]. Indicele conține numele variabilei.

Exemplul de mai jos arată cum se utilizează variabila super globală $GLOBALS:

Exemplu:
 
<?php
$x = 75;
$y = 25;
 
function addition() {
    $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
 
addition();
echo $z;
?>

În exemplul de mai sus, deoarece z este o variabilă prezentă în matricea (array) $GLOBALS, este accesibilă și din afara funcției!

PHP Variabile Globale - Superglobalele. PHP Superglobal - $_REQUEST. PHP $ _REQUEST.

PHP Superglobal - $_REQUEST

Variabilele super globale sunt variabile încorporate (built-in variables), care sunt întotdeauna disponibile în toate domeniile.

PHP $ _REQUEST

PHP $ _REQUEST este o variabilă super globală PHP care este folosită pentru a colecta date după trimiterea unui formular HTML.

Exemplul de mai jos arată un formular cu un câmp de intrare și un buton de trimitere (input field și submit button). Când un utilizator trimite datele făcând click pe „Trimite” (Submit), datele formularului sunt trimise fișierului specificat în atributul de acțiune (action attribute) al etichetei (tag) <form>. În acest exemplu, indicăm acest fișier în sine pentru prelucrarea datelor din formular. Dacă doriți să utilizați un alt fișier PHP pentru procesarea datelor din formular, înlocuiți-l cu numele de fișier ales. Apoi, putem folosi super variabila globală $ _REQUEST pentru a colecta valoarea câmpului de intrare (input field):

Exemplu:
 
<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  Nume: <input type="text" name="fname">
  <input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // colectați valoarea câmpului de intrare (input field)
    $name = $_REQUEST['fname'];
    if (empty($name)) {
        echo "Numele este gol";
    } else {
        echo $name;
    }
}
?>

</body>
</html>

PHP Variabile Globale - Superglobalele. PHP Superglobal - $_SERVER. PHP $ _SERVER.

PHP Superglobal - $_SERVER

Variabilele super globale sunt variabile încorporate (built-in variables), care sunt întotdeauna disponibile în toate domeniile.

PHP $ _SERVER

$ _SERVER este o variabilă super globală PHP care conține informații despre antetele, căile și locațiile scriptului (headers, paths, and script locations).

Exemplul de mai jos arată cum să folosiți unele dintre elementele din $ _SERVER:

Exemplu:
 
<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

Următorul tabel prezintă cele mai importante elemente care pot intra în interiorul $ _SERVER:

 
Element/Cod Descriere
$_SERVER['PHP_SELF'] Returnează numele de fișier al scriptului care se execută în prezent
$_SERVER['GATEWAY_INTERFACE'] Returnează versiunea Common Gateway Interface (CGI) pe care serverul o folosește
$_SERVER['SERVER_ADDR'] Returnează adresa IP a serverului gazdă (host server)
$_SERVER['SERVER_NAME'] Returnează numele serverului gazdă (host server) (cum ar fi www.lectii-virtuale.ro)
$_SERVER['SERVER_SOFTWARE'] Returnează șirul de identificare a serverului (server identification string) (cum ar fi Apache/2.2.24)
$_SERVER['SERVER_PROTOCOL'] Returnează numele și revizuirea protocolului informațional (cum ar fi HTTP/1.1)
$_SERVER['REQUEST_METHOD'] Returnează metoda de solicitare (request method) folosită pentru a accesa pagina (cum ar fi POST)
$_SERVER['REQUEST_TIME'] Returnează intervalul de timp al începerii cererii (timestamp of the start of the request) (cum ar fi 1377687496)
$_SERVER['QUERY_STRING'] Returnează șirul de interogare (query string) dacă pagina este accesată printr-un șir de interogare (query string)
$_SERVER['HTTP_ACCEPT'] Returnează antetul Accept (header) din cererea curentă (current request)
$_SERVER['HTTP_ACCEPT_CHARSET'] Returnează antetul Accept_Charset (Accept_Charset header) din cererea curentă (current request) (cum ar fi utf-8,ISO-8859-1)
$_SERVER['HTTP_HOST'] Returnează antetul gazdei (Host header) din cererea curentă(current request)
$_SERVER['HTTP_REFERER'] Returnează adresa URL completă a paginii curente (nu este de încredere, deoarece nu toți agenții utilizator o acceptă)
$_SERVER['HTTPS'] Este scriptul cerut printr-un protocol HTTP sigur
$_SERVER['REMOTE_ADDR'] Returnează adresa IP de unde utilizatorul vizualizează pagina curentă
$_SERVER['REMOTE_HOST'] Returnează numele gazdei (host name) de unde utilizatorul vizualizează pagina curentă
$_SERVER['REMOTE_PORT'] Returnează portul utilizat pe mașina utilizatorului pentru a comunica cu serverul web
$_SERVER['SCRIPT_FILENAME'] Returnează numele de cale absolut (absolute pathname) al scriptului care se execută în prezent
$_SERVER['SERVER_ADMIN'] Returnează valoarea acordată directivei SERVER_ADMIN din fișierul de configurare a serverului web (dacă scriptul rulează pe o gazdă virtuală (virtual host), va fi valoarea definită pentru acea gazdă virtuală (virtual host)) (cum ar fi [email protected])
$_SERVER['SERVER_PORT'] Returnează portul pe mașina serverului (server machine) care este utilizat de serverul web pentru comunicare (cum ar fi 80)
$_SERVER['SERVER_SIGNATURE'] Returnează versiunea serverului și numele gazdei virtuale (virtual host name) care sunt adăugate la paginile generate de server
$_SERVER['PATH_TRANSLATED'] Returnează calea bazată pe sistemul de fișiere la scriptul curent
$_SERVER['SCRIPT_NAME'] Returnează calea scriptuluicurent (path of the current script)
$_SERVER['SCRIPT_URI'] Returnează URI-ul paginii curente

PHP Variabile Globale - Superglobalele. Variabilele superglobale PHP sunt: $GLOBALS, $_SERVER, $_REQUEST, $_POST, $_GET, $_FILES, $_ENV, $_COOKIE, $_SESSION.

PHP Variabile Globale - Superglobalele

Superglobalele au fost introduse în PHP 4.1.0 și sunt variabile încorporate (built-in variables) care sunt întotdeauna disponibile în toate domeniile.

PHP Variabile Globale - Superglobalele

Unele variabile predefinite din PHP sunt „superglobale”, ceea ce înseamnă că sunt întotdeauna accesibile, indiferent de sfera de acțiune - și le puteți accesa din orice funcție, clasă sau fișier fără a fi nevoie să faceți nimic special.

Variabilele superglobale PHP sunt: 
 
  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

Capitolele următoare vor explica unele dintre superglobale, iar restul va fi explicat în capitolele ulterioare.
 

PHP Variabile Globale - Superglobalele. PHP Superglobal - $_POST. PHP $ _POST.

PHP Superglobal - $_POST

Variabilele super globale sunt variabile încorporate (built-in variables), care sunt întotdeauna disponibile în toate domeniile.

PHP $ _POST

PHP $ _POST este o variabilă super globală PHP, care este folosită pentru a colecta date de formular după trimiterea unui formular HTML cu method="post".
$ _POST este de asemenea utilizat pe scară largă pentru a trece variabilele.

Exemplul de mai jos arată un formular cu un câmp de intrare și un buton de trimitere (input field și submit button). Când un utilizator trimite datele făcând click pe „Trimite” (Submit), datele formularului sunt trimise fișierului specificat în atributul de acțiune (action attribute) al etichetei (tag) <form>. În acest exemplu, indicăm fișierul în sine pentru prelucrarea datelor din formular. Dacă doriți să utilizați un alt fișier PHP pentru procesarea datelor din formular, înlocuiți-l cu numele de fișier ales. Apoi, putem utiliza super variabila globală $ _POST pentru a colecta valoarea câmpului de intrare (input field):

Exemplu:
 
<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  Nume: <input type="text" name="fname">
  <input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // colectați valoarea câmpului de intrare (input field)
    $name = $_POST['fname'];
    if (empty($name)) {
        echo "Numele este gol";
    } else {
        echo $name;
    }
}
?>

</body>
</html>

PHP Variabile Globale - Superglobalele. PHP Superglobal - $_GET. PHP $ _GET.

PHP Superglobal - $_GET

Variabilele super globale sunt variabile încorporate (built-in variables), care sunt întotdeauna disponibile în toate domeniile.

PHP $ _GET

PHP $ _GET este o variabilă super globală PHP, care este utilizată pentru a colecta date de formular după trimiterea unui formular HTML cu method="get".

$ _GET poate colecta și datele trimise pe adresa URL.

Presupunem că avem o pagină HTML care conține un hyperlink cu parametri:
 
<html>
<body>

<a href="test_get.php?subject=PHP&web=lectii-virtuale.ro">Test $GET</a>

</body>
</html>

Când un utilizator face click pe linkul Test $GET”, parametrii „subject” și „web” sunt trimiși la „test_get.php”, iar apoi puteți accesa valorile sale în „test_get.php” cu $_GET.

Exemplul de mai jos arată codul din „test_get.php”:

Exemplu:
 
<html>
<body>

<?php
echo "Studiu " . $_GET['subject'] . " la " . $_GET['web'];
?>

</body>
</html>

Manipularea formularelor PHP. Superglobalele PHP $_GET și $_POST. PHP - Un formular HTML simplu. Gândiți-vă la SECURITATE când prelucrați formularele PHP!

 Manipularea formularelor PHP (PHP Form Handling)

Superglobalele PHP $_GET și $_POST sunt utilizate pentru colectarea datelor de formular (form-data).

PHP - Un formular HTML simplu

Exemplul de mai jos afișează un formular HTML simplu cu două câmpuri de introducere și un buton de trimitere (input fields și submit button):

Exemplu:
 
<html>
<body>

<form action="welcome.php" method="post">
Nume: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>

Când utilizatorul completează formularul de mai sus și face click pe butonul de trimitere (submit), datele formularului sunt trimise pentru procesare într-un fișier PHP numit „welcome.php”. Datele formularului sunt trimise cu metoda HTTP POST.
Pentru a afișa datele trimise, pur și simplu puteți echo toate variabilele. „welcome.php” arată astfel:

Exemplu:
 
<html>
<body>

Bun venit <?php echo $_POST["name"]; ?><br>
Adresa dvs. de e-mail este: <?php echo $_POST["email"]; ?>

</body>
</html>


Rezultatul ar putea fi ceva de genul:
 
Bun venit Ion
Adresa dvs. de e-mail este [email protected]

Același rezultat ar putea fi obținut și folosind metoda HTTP GET:

Exemplu:
 
<html>
<body>

<form action="welcome_get.php" method="get">
Nume: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>

și „welcome_get.php” arată astfel:
 
<html>
<body>

Bun venit <?php echo $_GET["name"]; ?><br>
Adresa dvs. de e-mail este: <?php echo $_GET["email"]; ?>

</body>
</html>

Codul de mai sus este destul de simplu. Cu toate acestea, cel mai important lucru lipsește. Trebuie să validați datele formularului pentru a vă proteja scriptul împotriva codului rău intenționat.

Gândiți-vă la SECURITATE când prelucrați formularele PHP!

Această pagină nu conține nicio validare a formularului, ci doar arată cum puteți trimite și recupera datele de formular.
Cu toate acestea, paginile următoare vor arăta cum să procesați formularele PHP cu securitate în minte! Validarea corectă a datelor formularului este importantă pentru a vă proteja formularul de hackeri și spameri!

Manipularea formularelor PHP. GET vs. POST. Când să folosiți GET? Când să folosiți POST?

GET vs. POST

Atât GET, cât și POST creează un tablou (array) (de exemplu, array( key1 => value1, key2 => value2, key3 => value3, ...)). Acest tablou (array) conține perechi cheie/valoare (key/value), unde cheile (keys) sunt numele controalelor de formular (form controls) și valorile sunt datele de intrare (input data) de la utilizator.

Atât GET, cât și POST sunt tratate ca $_GET și $_POST. Acestea sunt superglobale, ceea ce înseamnă că sunt întotdeauna accesibile, indiferent de sfera de aplicare - și le puteți accesa din orice funcție, clasă sau fișier (function, class or file) fără a fi nevoie să faceți nimic special.

$_GET reprezintă o serie de variabile transmise scriptului curent prin parametrii URL.

$ _POST reprezintă o serie de variabile transmise scriptului curent prin metoda HTTP POST.

Când să folosiți GET?

Informațiile trimise dintr-un formular cu metoda GET sunt vizibile tuturor (toate numele variabilelor și valorile (variable names/ values) sunt afișate pe adresa URL). GET are, de asemenea, limite privind cantitatea de informații care trebuie trimise. Limitarea este de aproximativ 2000 de caractere. Cu toate acestea, deoarece variabilele sunt afișate în adresa URL, este posibilă marcarea paginii. Acest lucru poate fi util în unele cazuri.

GET poate fi utilizat pentru trimiterea de date non-sensibile (non-sensitive data).

Notă: GET nu ar trebui niciodată utilizat pentru trimiterea de parole sau alte informații sensibile!

Când să folosiți POST?

Informațiile trimise dintr-un formular cu metoda POST sunt invizibile pentru alții (toate numele/valorile (names/values) sunt încorporate în corpul solicitării (body) HTTP) și nu au limite privind cantitatea de informații de trimis.

Mai mult, POST acceptă funcționalități avansate, cum ar fi asistența pentru intrarea binară în mai multe părți (multi-part binary input) în timp ce încărcați fișiere pe server.

Cu toate acestea, deoarece variabilele nu sunt afișate în adresa URL, nu este posibilă marcarea paginii.

Dezvoltatorii preferă POST pentru trimiterea datelor de formular (form data).

Formular PHP Obligatoriu. PHP - Afișează mesajele de eroare. Validarea datelor de intrare.

PHP - Afișează mesajele de eroare (PHP - Display The Error Messages)

Apoi, în formularul HTML, adăugăm putin de script după fiecare câmp necesar (required field), care generează mesajul de eroare (error message) corect dacă este necesar (adică dacă utilizatorul încearcă să trimită formularul fără a completa câmpurile necesare (required fields)):

Exemplu:
 
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Nume: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail:
<input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website:
<input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
Coment: <textarea name="comment" rows="5" cols="40"></textarea>
<br><br>
Gen:
<input type="radio" name="gender" value="female">Female
<input type="radio" name="gender" value="male">Male
<input type="radio" name="gender" value="other">Other
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">

</form>

Următorul pas este validarea datelor de intrare (input data), adică „Conține câmpul Nume doar litere și spațiu alb?”, iar „Conține câmpul E-mail o sintaxă a adresei de e-mail validă?”, iar dacă este completat, ”Conține câmpul Website o adresă URL validă? ".

Formular PHP Obligatoriu. Formulare PHP - Câmpuri obligatorii. Instrucțiunea if else. Variabila $_POST. Funcția PHP empty(). Funcția test_input(). Variabile de eroare.

Formulare PHP - Câmpuri obligatorii (PHP Forms - Required Fields)

Acest capitol arată cum se pot face câmpurile de intrare necesare (input fields required) și se pot crea mesaje de eroare (error messages), dacă este nevoie.

PHP - Câmpuri obligatorii (PHP - Required Fields)

Din tabelul cu regulile de validare din pagina anterioară, vedem că sunt obligatorii câmpurile „Nume”, „E-mail” și „Gen”. Aceste câmpuri nu pot fi goale și trebuie completate în formularul HTML.

 
Câmp Reguli de validare
Nume Obligatoriu. + Trebuie să conțină doar litere și spațiu alb
E-mail Obligatoriu. + Trebuie să conțină o adresă de e-mail validă (cu @ și.)
Website Opțional. Dacă este prezent, trebuie să conțină o adresă URL validă
Coment Opțional. Câmp de introducere pe mai multe linii (Multi-line input field) (textarea)
Gen Obligatoriu. Trebuie să selectați unul

În capitolul precedent, toate câmpurile de intrare (input fields) au fost opționale.

În codul următor, am adăugat câteva variabile noi: $nameErr, $emailErr, $genderErr și $websiteErr $. Aceste variabile de eroare (error variables) vor conține mesaje de eroare (error messages) pentru câmpurile necesare (required fields). Am adăugat, de asemenea, o instrucțiune if else pentru fiecare variabilă $_POST. Se verifică dacă variabila $_POST este goală (cu funcția PHP empty()). Dacă este gol, un mesaj de eroare (error message) este stocat în diferite variabile de eroare (error variables)  și, dacă nu este gol, trimite datele de intrare (input data) ale utilizatorului prin funcția test_input():
 
<?php
// definiți variabilele și setați valorile goale
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } else {
    $name = test_input($_POST["name"]);
  }

  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
  }

  if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = test_input($_POST["website"]);
  }

  if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = test_input($_POST["comment"]);
  }

  if (empty($_POST["gender"])) {
    $genderErr = "Gender is required";
  } else {
    $gender = test_input($_POST["gender"]);
  }
}
?>

PHP Form - E-mail/ URL. Formulare PHP - Validați e-mailul și adresa URL. PHP - Validare nume. Funcția preg_match(). PHP - Validare e-mail. Funcția PHP filter_var(). PHP - Validare URL.

Formulare PHP - Validați e-mailul și adresa URL

Acest capitol arată cum se pot valida numele, e-mailurile și adresele URL.

PHP - Validare nume

Codul de mai jos arată o modalitate simplă de a verifica dacă câmpul nume conține doar litere și spațiu alb. Dacă valoarea câmpului nume nu este validă, atunci stocați un mesaj de eroare (error message):
 
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
  $nameErr = "Sunt permise doar litere și spațiu alb";
}

Funcția preg_match() caută un șir de șablon (string for pattern), returnând adevărat (true) dacă modelul (pattern) există și fals (false) altfel.

PHP - Validare e-mail

Cel mai simplu și mai sigur mod de a verifica dacă o adresă de e-mail este bine formulată este să folosești funcția PHP filter_var().

În codul de mai jos, dacă adresa de e-mail nu este bine formulată, atunci stocați un mesaj de eroare (error message):
 
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  $emailErr = "Format de e-mail invalid";
}

PHP - Validare URL

Codul de mai jos arată o modalitate de a verifica dacă o sintaxă a adresei URL este validă (această expresie obișnuită permite și liniuțe în adresa URL). Dacă sintaxa adresei URL nu este validă, atunci stocați un mesaj de eroare (error message):
 
$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
  $websiteErr = "URL invalid";
}

PHP Form - E-mail/ URL. PHP - Validați numele, e-mailul și adresa URL.

PHP - Validați numele, e-mailul și adresa URL

Scriptul acum arată așa:

Exemplu:
 
<?php
// definiți variabilele și setați valorile goale
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Numele este necesar";
  } else {
    $name = test_input($_POST["name"]);
    // verificați dacă numele conține doar litere și spațiu alb
    if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
      $nameErr = "Sunt permise doar litere și spațiu alb";
    }
  }

  if (empty($_POST["email"])) {
    $emailErr = "Email is required";
  } else {
    $email = test_input($_POST["email"]);
    // verificați dacă adresa de e-mail este bine formulată
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "Format de e-mail nevalid";
    }
  }

  if (empty($_POST["website"])) {
    $website = "";
  } else {
    $website = test_input($_POST["website"]);
    // verificați dacă sintaxa adresei URL este validă (această expresie obișnuită permite și liniuțe în URL)
    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
      $websiteErr = "URL nevalid";
    }
  }

  if (empty($_POST["comment"])) {
    $comment = "";
  } else {
    $comment = test_input($_POST["comment"]);
  }

  if (empty($_POST["gender"])) {
    $genderErr = "Genul este necesar";
  } else {
    $gender = test_input($_POST["gender"]);
  }
}
?>
Următorul pas este să arătați cum să împiedicați formularul să golească toate câmpurile de intrare (input fields) atunci când utilizatorul trimite formularul.

PHP formular complet. Exemplu de formular complet PHP. PHP - Păstrați valorile în formular.

Exemplu de formular complet PHP (PHP Complete Form Example)

Acest capitol arată cum să păstrați valorile în câmpurile de introducere (input fields) atunci când utilizatorul apasă butonul de trimitere (submit button).

PHP - Păstrați valorile în formular

Pentru a afișa valorile din câmpurile de intrare (input fields) după ce utilizatorul apasă pe butonul de trimitere (submit button), adăugăm puțin script PHP în interiorul valorii atributului (value attribute) al următoarelor câmpuri de intrare (input fields): nume, e-mail și site-ul web (name, email și website). În câmpul textarea (textarea field) comment, am pus scriptul între etichetele (tags) <textarea> și </textarea>. Micul script produce (outputs) valoarea variabilelor $name, $email, $website și $comment.
Apoi, trebuie să arătăm și ce buton radio (radio button) a fost bifat. Pentru aceasta, trebuie să manipulăm atributul bifat (checked attribute) (nu atributul valoare pentru butoanele radio) (radio buttons):
 
Nume: <input type="text" name="name" value="<?php echo $name;?>">

E-mail: <input type="text" name="email" value="<?php echo $email;?>">

Website: <input type="text" name="website" value="<?php echo $website;?>">

Comentariu: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>

Gen:

<input type="radio" name="gender"
<?php if (isset($gender) && $gender=="female") echo "checked";?>
value="female">Femeie
<input type="radio" name="gender"
<?php if (isset($gender) && $gender=="male") echo "checked";?>
value="male">Bărbat
<input type="radio" name="gender"
<?php if (isset($gender) && $gender=="other") echo "checked";?>
value="other">Altele

PHP Data și Ora. Mai multe exemple de date.

Mai multe exemple de date

Exemplul de mai jos scoate (outputs) datele pentru următoarele șase sâmbete:

Exemplu:
 
<?php
$startdate = strtotime("Sâmbătă");
$enddate = strtotime("+ 6 săptămâni", $startdate);

while ($startdate < $enddate) {
  echo date("M d", $startdate) . "<br>";
  $startdate = strtotime("+ 1 săptămână", $startdate);
}
?>

Exemplul de mai jos afișează numărul de zile până la 4 iulie:

Exemplu:
 
<?php
$d1=strtotime("04 iulie");
$d2=ceil(($d1-time())/60/60/24);
echo "Există " . $d2 ." zile până la 4 iulie.";
?>

PHP Data și Ora. Funcția PHP date(). Sintaxă: ​​​​​​​date(format,timestamp). Obțineți o dată. Parametrul format.

PHP Data și ora (PHP Date and Time)

Funcția PHP date() este utilizată pentru formatarea unei date și/sau a unei ore.

Funcția PHP date()

Funcția PHP date() formatează un marcaj de timp (timestamp) într-o dată și o oră mai lizibile.

Sintaxă
 
​​​​​​​date(format,timestamp)

​​​​​​​
Parametru Descriere
format Obligatoriu. Specifică formatul de timp (timestamp)
timestamp Opțional. Specifică un marcaj de timp (timestamp). Valoarea implicită (default) o reprezintă data și ora curente


Un marcaj de timp (timestamp) este o succesiune de caractere, care indică data și/sau ora la care a avut loc un anumit eveniment.
​​​​​​​
Obțineți o dată

Parametrul format necesar al funcției date() specifică modul de formatare al datei (sau orei).

Iată câteva caractere care sunt utilizate frecvent pentru date:
 
  • d - Reprezintă ziua lunii (01 - 31)
  • m - Reprezintă o lună (de la 01 la 12)
  • Y - Reprezintă un an (în patru cifre)
  • l (lowercase 'L') - Reprezintă ziua săptămânii

Alte caractere, cum ar fi „/”, „.” sau „-” pot fi de asemenea inserate între caractere pentru a adăuga o formatare suplimentară.

Exemplul de mai jos formatează data de astăzi în trei moduri diferite:

Exemplu:
 
<?php
echo "Astăzi este " . date("Y/m/d") . "<br>";
echo "Astăzi este " . date("Y.m.d") . "<br>";
echo "Astăzi este " . date("Y-m-d") . "<br>";
echo "Astăzi este " . date("l");
?>

PHP Data și Ora. Creați o dată cu mktime(). Parametrul opțional timestamp. Funcția date(). Funcția PHP mktime(). Marcajul de timp Unix. Sintaxă. Creați o dată dintr-un string cu strtotime(). Funcția PHP strtotime(). Sintaxă.

Creați o dată cu mktime()

Parametrul opțional timestamp din funcția date() specifică un marcaj de timp (timestamp). Dacă este omisă, vor fi utilizate data și ora curentă (ca în exemplele de mai sus).

Funcția PHP mktime() întoarce marcajul de timp (timestampUnix pentru o dată. Marcajul de timp Unix (timestamp) conține numărul de secunde între Unix Epoch (1 ianuarie 1970 00:00:00 GMT) și ora specificată.

Sintaxă
 
mktime(hour, minute, second, month, day, year)

Exemplul de mai jos creează o dată și o oră cu funcția date() dintr-un număr de parametri în funcția mktime():

Exemplu:
 
<?php
$d=mktime(11, 14, 54, 8, 12, 2014);
echo "Data creerii este " . date("Y-m-d h:i:sa", $d);
?>

Creați o dată dintr-un șir (string) cu strtotime()

Funcția PHP strtotime() este utilizată pentru a converti un șir de date (date string) care poate fi citit de om într-un marcaj de timp (timestamp) Unix (numărul de secunde de la 1 ianuarie 1970, 00:00:00 GMT).

Sintaxă
 
strtotime(time, now)

Exemplul de mai jos creează o dată și o oră din funcția strtotime():

Exemplu:
 
<?php
$d=strtotime("10:30pm April 15 2014");
echo "Data creerii este " . date("Y-m-d h:i:sa", $d);
?>

PHP este destul de inteligent în ceea ce privește conversia unui șir (string) într-o dată, astfel încât să puteți pune diverse valori:

Exemplu:
 
<?php
$d=strtotime("mâine");
echo date("Y-m-d h:i:sa", $d) . "<br>";

$d=strtotime("sâmbăta viitoare");
echo date("Y-m-d h:i:sa", $d) . "<br>";

$d=strtotime("+ 3 luni"");
echo date("Y-m-d h:i:sa", $d) . "<br>";
?>

Cu toate acestea, strtotime() nu este perfect, așa că nu uitați să verificați șirurile (stringurile) pe care le introduceți acolo.

PHP Data și Ora. Obțineți o oră. Funcția PHP date(). Obțineți-vă fusul orar.

Obțineți o oră

Iată câteva caractere care sunt utilizate frecvent pentru perioade:
 
  • H - format de 24 de ore al unei ore (de la 00 la 23)
  • h - format de 12 ore al unei ore cu zerouri în față (de la 01 la 12)
  • i - Minute cu zerouri în față (00-59)
  • s - Secunde cu zerouri în față (de la 00 la 59)
  • a - Lowercase Ante meridian și Post meridian (am sau pm)

Exemplul de mai jos emite ora curentă în formatul specificat:

Exemplu:
 
<?php
echo "Este ora " . date("h:i:sa");
?>

Rețineți că funcția PHP date() va returna data/ora curentă a serverului!


Obțineți-vă fusul orar (timezone)

Dacă timpul de întoarcere din cod nu este corect, cel mai probabil este pentru că serverul dvs. se află într-o altă țară sau este configurat pentru un alt fus orar (timezone).

Deci, dacă aveți nevoie de o oră corectă în funcție de o anumită locație, puteți seta fusul orar (timezone) pe care doriți să îl utilizați.

Exemplul de mai jos stabilește fusul orar (timezone) pe „America/New_York”, apoi emite ora curentă în formatul specificat:

Exemplu:
 
<?php
date_default_timezone_set("America/New_York");
echo "Este ora " . date("h:i:sa");
?>

PHP Include. Exemple PHP include.

Exemple PHP include

Exemplul 1

Presupunem că avem un fișier subsol standard (standard footer file) numit "footer.php", care arată astfel:
 
<?php
echo "<p>Copyright &copy; 2020-" . date("Y") . " lectii-virtuale.ro</p>";
?>

Pentru a include fișierul subsol (footer file) într-o pagină, utilizați instrucțiunea include:

Exemplu:
 
<html>
<body>

<h1>Bine ați venit pe prima mea pagină!</h1>
<p>Un text.</p>
<p>Mai mult text.</p>
<?php include 'footer.php';?>

</body>
</html>

Exemplul 2

Presupunem că avem un fișier meniu standard (standard menu file) numit "menu.php":
 
<?php
echo '<a href="/default.asp">Home</a> -
<a href="/html/default.asp">Tutorial HTML</a> -
<a href="/css/default.asp">Tutorial CSS</a> -
<a href="/js/default.asp">Tutorial JavaScript</a> -
<a href="default.asp">Tutorial PHP</a>';
?>

Toate paginile de pe site-ul web ar trebui să folosească acest fișier meniu. Iată cum se poate face (folosim un element <div> pentru ca meniul să poată fi ușor stilat mai târziu cu CSS):

Exemplu:
 
<html>
<body>

<div class="menu">
<?php include 'menu.php';?>
</div>

<h1>Bine ați venit pe prima mea pagină!</h1>
<p>Un text.</p>
<p>Mai mult text.</p>

</body>
</html>

Exemplul 3

Presupunem că avem un fișier numit "vars.php", cu cateva variabile definite:
 
<?php
$color='roșu';
$car='BMW';
?>

Apoi, dacă includem fișierul "vars.php", variabilele pot fi utilizate în fișierul apelant:

Exemplu:
 
<html>
<body>

<h1>Bine ați venit pe prima mea pagină!</h1>
<?php include 'vars.php';
echo "Am o $color $car.";
?>

</body>
</html>

PHP Include. PHP fișiere include. Instrucțiunea include. PHP declarațiile include și require. Instrucțiunea require. Sintaxă.

PHP fișiere include (PHP Include Files)

Instrucțiunea include (sau require) preia tot textul/codul/marcajul (text/code/markup) care există în fișierul specificat și îl copiază în fișierul care folosește instrucțiunea include.

Includerea fișierelor este foarte utilă atunci când doriți să includeți același PHP, HTML sau text în mai multe pagini ale unui site web.

PHP declarațiile include și require (PHP include and require Statements)

Este posibil să inserați conținutul unui fișier PHP într-un alt fișier PHP (înainte ca serverul să îl execute), cu instrucțiunea include sau require.

Instrucțiunile include și require sunt identice, cu excepția eșecului:
 
  • require va produce o eroare fatală (E_COMPILE_ERROR) și va opri scriptul.
  • include va produce doar un avertisment (E_WARNING) și scriptul va continua.

Așadar, dacă doriți ca execuția să continue și să le arate utilizatorilor ieșirea (output), chiar dacă fișierul include lipsește, folosiți instrucțiunea include.

În caz contrar, în cazul FrameWork, CMS sau o codificare complexă a aplicației PHP, utilizați întotdeauna instrucțiunea require pentru a include un fișier cheie (key file) pentru fluxul de execuție. Acest lucru va ajuta la evitarea compromiterii securității și integrității aplicației dvs., doar în caz că lipsește accidental un fișier cheie (key file).

Inclusiv fișierele economisesc multă muncă. Aceasta înseamnă că puteți crea un antet, un subsol sau un fișier de meniu (header, footer sau menu file) pentru toate paginile dvs. web. Apoi, când antetul (header) trebuie actualizat, puteți actualiza doar antetul (headerfișierul include (include file).

Sintaxă
 
include 'filename'; 
sau 
 
require 'filename';

PHP Include. PHP include vs. require. Instrucțiunea require. Instrucțiunea include.

PHP include vs. require

Instrucțiunea require este de asemenea folosită pentru a include un fișier în codul PHP.

Cu toate acestea, există o mare diferență între include și require; când un fișier este inclus cu instrucțiunea include și PHP nu îl poate găsi, scriptul va continua să execute:

Exemplu:
 
<html>
<body>

<h1>Bine ați venit pe prima mea pagină!</h1>
<?php include 'noFileExists.php';
echo "Am o $color $car.";
?>

</body>
</html>

Dacă facem același exemplu folosind instrucțiunea require, instrucțiunea echo nu va fi executată, deoarece execuția scriptului moare după ce instrucțiunea require a returnat o eroare fatală:

Exemplu:
 
<html>
<body>

<h1>Bine ați venit pe prima mea pagină!</h1>
<?php require 'noFileExists.php';
echo "Am o $color $car.";
?>

</body>
</html>

Folosiți require când fișierul este solicitat de aplicație.

Folosiți include atunci când fișierul nu este necesar și aplicația ar trebui să continue atunci când fișierul nu este găsit.

Manipularea fișierelor PHP. Funcția PHP readfile().

Manipularea fișierelor PHP (PHP File Handling)

Manipularea fișierelor (File handling) este o parte importantă a oricărei aplicații web. Adesea, trebuie să deschideți și să procesați un fișier pentru diferite sarcini.

PHP Manipularea fișierelor (PHP Manipulating Files)

PHP are mai multe funcții pentru crearea, citirea, încărcarea și editarea fișierelor (creating, reading, uploading, and editing files).

Aveți grijă când manipulați fișierele (manipulating files)!

Când manipulați fișierele (manipulating files) trebuie să fiți foarte atenți.
Puteți face multe daune dacă faceți ceva greșit. Erorile comune sunt: ​​editarea fișierului greșit, completarea unui hard disk cu date nefolositoare (garbage data) și ștergerea din accident a conținutului unui fișier.

Funcția PHP readfile()

Funcția readfile() citește un fișier și îl scrie în bufferul de ieșire (output buffer).

Presupunem că avem un fișier text numit „webdictionary.txt”, stocat pe server, care arată astfel:


AJAX = JavaScript și XML asincron (Asynchronous JavaScript and XML)
CSS = Fișe de stil în cascadă (Cascading Style Sheets)
HTML = Hyper Text Markup Language
PHP = PHP Hypertext Preprocessor
SQL = Limbaj de interogare structurat (Structured Query Language)
SVG = Grafică vectorială scalabilă (Scalable Vector Graphics)
XML = Limbaj de marcare extinsă  (EXtensible Markup Language)

Codul PHP pentru a citi fișierul și a-l scrie în bufferul de ieșire (output buffer) este după cum urmează (funcția readfile() returnează numărul de octeți citiți cu succes):
 
<?php
echo readfile("webdictionary.txt");
?>

Funcția readfile() este utilă dacă tot ce doriți să faceți este să deschideți un fișier și să citiți conținutul acestuia.

Capitolele următoare vă vor învăța mai multe despre gestionarea fișierelor.

Fișierele PHP Open/Read/Close. Funcția fopen(). Funcțiile fread() și fclose().

PHP File Open/Read/Close

În acest capitol vă vom învăța cum să deschideți, să citiți și să închideți (open, read și close) un fișier pe server.

O metodă mai bună de a deschide fișiere este cu funcția fopen(). Această funcție vă oferă mai multe opțiuni decât funcția readfile().

Vom folosi fișierul text, "webdictionary.txt", în timpul lecțiilor:

AJAX = JavaScript și XML asincron (Asynchronous JavaScript and XML)
CSS = Fișe de stil în cascadă (Cascading Style Sheets)
HTML = Hyper Text Markup Language
PHP = PHP Hypertext Preprocessor
SQL = Limbaj de interogare structurat (Structured Query Language)
SVG = Grafică vectorială scalabilă (Scalable Vector Graphics)
XML = Limbaj de marcare extinsă (EXtensible Markup Language)

Primul parametru al fopen() conține numele fișierului care trebuie deschis și al doilea parametru specifică în ce mod ar trebui să fie deschis fișierul. Următorul exemplu generează, de asemenea, un mesaj dacă funcția fopen() nu poate deschide fișierul specificat:

Exemplu:
 
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Nu se poate deschide fișierul!");
echo fread($myfile,filesize("webdictionary.txt"));
fclose($myfile);
?>

Sfat: Funcțiile fread() și fclose() vor fi explicate mai jos.

Fișierul poate fi deschis într-unul din următoarele moduri:

 
Moduri Descriere
r Deschideți un fișier numai pentru citire (read only). Indicatorul de fișiere (File pointer) începe de la începutul fișierului.
w Deschideți un fișier numai pentru scriere (write only). Șterge conținutul fișierului sau creează un nou fișier dacă acesta nu există. Indicatorul de fișiere (File pointer) începe de la începutul fișierului
a Deschideți un fișier numai pentru scriere (write only). Datele existente în fișier sunt păstrate. Indicatorul fișierului (File pointer) începe la sfârșitul fișierului. Creează un nou fișier dacă fișierul nu există
x Creează un nou fișier numai pentru scriere (write only). Returnează FALSE și o eroare dacă fișierul există deja
r+ Deschideți un fișier pentru citire / scriere (read/write). Indicatorul de fișiere (File pointer) începe de la începutul fișierului
w+ Deschideți un fișier pentru citire / scriere (read/write). Șterge conținutul fișierului sau creează un nou fișier dacă acesta nu există. Indicatorul de fișiere (File pointer) începe de la începutul fișierului
a+ Deschideți un fișier pentru citire / scriere (read/write). Datele existente în fișier sunt păstrate. Indicatorul fișierului (File pointer) începe la sfârșitul fișierului. Creează un nou fișier dacă fișierul nu există
x+ Creează un nou fișier pentru citire / scriere (read/write). Returnează FALSE și o eroare dacă fișierul există deja

Fișierele PHP Open/Read/Close. Fișierul PHP Read - fread(). Funcția fread(). Fișierul PHP Close - fclose(). Funcția fclose().

PHP Read File - fread()

Funcția fread() citește dintr-un fișier deschis.

Primul parametru al fread() conține numele fișierului din care trebuie citit și al doilea parametru specifică numărul maxim de octeți de citit.

Următorul cod PHP citește fișierul "webdictionary.txt" până la sfârșit:
 
fread($myfile,filesize("webdictionary.txt"));

PHP Close File - fclose()

Funcția fclose() este utilizată pentru a închide un fișier deschis.

Este o practică bună de programare pentru a închide toate fișierele după ce ați terminat cu ele. Nu doriți ca un fișier deschis să fie difuzat pe serverul dvs. preluând resurse!

fclose() necesită numele fișierului (sau o variabilă care deține numele fișierului) pe care dorim să o închidem:

Exemplu:
 
<?php
$myfile = fopen("webdictionary.txt", "r");
// ceva cod care urmează să fie executat ....
fclose($myfile);
?>

Fișierele PHP Open/Read/Close. PHP Citește o singură linie - fgets(). Funcția fgets(). PHP Verifică sfârșitul fișierului - feof(). Funcția feof(). PHP Citește un singur caracter - fgetc(). Funcția fgetc().

PHP Citește o singură linie - fgets() (PHP Read Single Line - fgets())

Funcția fgets() este utilizată pentru a citi o singură linie dintr-un fișier.

Exemplul de mai jos produce (outputs) prima linie a fișierului "webdictionary.txt":

Exemplu:
 
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Nu se poate deschide fișierul!");
echo fgets($myfile);
fclose($myfile);
?>

Notă: După un apel la funcția fgets(), indicatorul de fișiere (file pointer) a trecut la linia următoare.


PHP Verifică sfârșitul fișierului - feof() (PHP Check End-Of-File - feof())

Funcția feof() verifică dacă s-a ajuns la „sfârșitul fișierului” (end-of-file) (EOF).

Funcția feof() este utilă pentru a bucla (looping) prin date de lungime necunoscută.

Exemplul de mai jos citește fișierul "webdictionary.txt" linie rând, până la sfârșitul fișierului (end-of-file):

Exemplu:
 
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Nu se poate deschide fișierul!");
//  Ieșirea unei linii până la sfârșitul fișierului (end-of-file)
while(!feof($myfile)) {
  echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>


PHP Citește un singur caracter - fgetc() (PHP Read Single Character - fgetc())

Funcția fgetc() este utilizată pentru a citi un singur caracter dintr-un fișier.

Exemplul de mai jos citește fișierul "webdictionary.txt" caracter după caracter, până când se ajunge la sfârșitul fișierului (end-of-file):

Exemplu:
 
<?php
$myfile = fopen("webdictionary.txt", "r") or die("Nu se poate deschide fișierul!");
// Ieșirea unui caracter până la sfârșitul fișierului (end-of-file)
while(!feof($myfile)) {
  echo fgetc($myfile);
}
fclose($myfile);
?>

Notă: După un apel către funcția fgetc(), indicatorul de fișier (file pointer) se mută la următorul caracter.

Validare formular PHP. Gândiți-vă la SECURITATE când prelucrați formularele PHP! Reguli de validare pentru un formular.

Validare formular PHP

Acesta și capitolele următoare arată cum să folosești PHP pentru a valida datele formularului.

Gândiți-vă la SECURITATE când prelucrați formularele PHP!

Aceste pagini vor arăta cum să procesați formularele PHP din punct de vedere al securității. Validarea corectă a datelor din formular este importantă pentru a vă proteja formularul de hackeri și spameri!

Formularul HTML la care vom lucra în aceste capitole, conține diferite câmpuri de introducere: câmpuri de text obligatorii și opționale, butoane radio și un buton de trimitere (required and optional text fields, radio buttons, and a submit button):




Regulile de validare pentru formularul de mai sus sunt următoarele:

 
Câmp Reguli de validare
Name Obligatoriu. + Trebuie să conțină doar litere și spațiu alb
E-mail Obligatoriu. + Trebuie să conțină o adresă de e-mail validă (cu @ și.)
Website Opțional. Dacă este prezent, trebuie să conțină o adresă URL validă
Comment Opțional. Câmp de introducere pe mai multe linii (Multi-line input field) (textarea)
Gender Obligatoriu. Trebuie să selectați una

Validare formular PHP. Câmpuri text. Butoane radio. Elementul form. Ce este variabila $_SERVER["PHP_SELF"] ? Ce este funcția htmlspecialchars()?

Mai întâi vom analiza codul HTML simplu pentru formular:

Câmpuri text (Text Fields)

Câmpurile nume, e-mail și website sunt elemente de introducere ale textului (input elements), iar câmpul de comentarii este textarea. Codul HTML arată astfel:
 
Nume: <input type="text" name="name">
E-mail: <input type="text" name="email">
Website: <input type="text" name="website">
Comment: <textarea name="comment" rows="5" cols="40"></textarea>

Butoane radio (Radio Buttons)

Câmpurile gen (gender fields) sunt butoane radio, iar codul HTML arată astfel:
 
Gen:
<input type="radio" name="gender" value="female">Femeie
<input type="radio" name="gender" value="male">Bărbat
<input type="radio" name="gender" value="other">Altele

Elementul form (The Form Element)

Codul HTML al formularului arată astfel:
 
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Când formularul este trimis, datele formularului sunt trimise cu method = "post".

Ce este variabila $_SERVER["PHP_SELF"] ?

$_SERVER["PHP_SELF"] este o variabilă super globală care returnează numele de fișier al scriptului care se execută în prezent.

Așadar, $_SERVER["PHP_SELF"] trimite datele formularului (submitted form data) trimis către pagina în sine, în loc să sară pe o altă pagină. În acest fel, utilizatorul va primi mesaje de eroare pe aceeași pagină ca și formularul.

Ce este funcția htmlspecialchars()?

Funcția htmlspecialchars() convertește caracterele speciale în entități HTML. Aceasta înseamnă că va înlocui caractere HTML precum <and> cu &lt; și &gt;. Acest lucru împiedică atacatorii să exploateze codul prin injectarea codului HTML sau a javascriptului (Cross-site Scripting attacks) în formulare.

Validare formular PHP. Notă imporantă privind securitatea formularului PHP. Variabila $_SERVER["PHP_SELF"]. Cross Site Scripting (XSS).

Notă imporantă privind securitatea formularului PHP

Variabila $_SERVER["PHP_SELF"] poate fi utilizată de hackeri!

Dacă PHP_SELF este utilizat în pagina dvs., un utilizator poate introduce un slash (/) și apoi unele comenzi de Cross Site Scripting (XSS) pentru a executa.

Scripturi încrucișate (Cross-site scripting) (XSS) este un tip de vulnerabilitate a securității computerului care se găsește de obicei în aplicațiile Web. XSS le permite atacatorilor să injecteze scripturi din partea clientului în paginile Web vizualizate de alți utilizatori.

Presupunem că avem următorul formular într-o pagină numită "test_form.php":
 
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

Acum, dacă un utilizator introduce URL-ul normal în bara de adrese precum "http://www.example.com/test_form.php", codul de mai sus va fi tradus în:
 
<form method="post" action="test_form.php">

Până acum, bine.

Cu toate acestea, considerați că un utilizator introduce următoarea adresă URL în bara de adrese:
 
http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E

În acest caz, codul de mai sus va fi tradus în:
 
<form method="post" action="test_form.php/"><script>alert('hacked')</script>

Acest cod adaugă o etichetă script (script tag) și o comandă de alertă (alert command). Și atunci când pagina se încarcă, codul JavaScript va fi executat (utilizatorul va vedea o casetă de alertă (alert box)). Acesta este doar un exemplu simplu și inofensiv cum poate fi exploatată variabila PHP_SELF.

Fiți conștienți de faptul că orice cod JavaScript poate fi adăugat în eticheta <script>! Un hacker poate redirecționa utilizatorul către un fișier de pe alt server, iar respectivul fișier poate conține cod rău intenționat care poate modifica variabilele globale sau poate trimite formularul la o altă adresă pentru a salva datele utilizatorului, de exemplu.

Validare formular PHP. Cum să evitați exploatările $_SERVER["PHP_SELF"]? Validați datele formularului cu PHP. Funcția PHP htmlspecialchars(). Funcția PHP trim(). Funcția PHP stripslashes(). Funcția test_input(). Variabila $_POST.

Cum să evitați exploatările $_SERVER["PHP_SELF"]?

Exploatările $_SERVER["PHP_SELF"] pot fi evitate folosind funcția htmlspecialchars().

Codul formularului ar trebui să arate astfel:
 
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Funcția htmlspecialchars() convertește caracterele speciale în entități HTML. Acum, dacă utilizatorul încearcă să exploateze variabila PHP_SELF, va rezulta următoarea ieșire (output):
 
<form method="post" action="test_form.php/&quot;&gt;&lt;script&gt;alert('hacked')&lt;/script&gt;">

Tentativa de exploatare eșuează și nu se face niciun rău!

Validați datele formularului cu PHP

Primul lucru pe care îl vom face este să trecem toate variabilele prin funcția PHP htmlspecialchars().

Când folosim funcția htmlspecialchars(); atunci dacă un utilizator încearcă să trimită următoarele într-un câmp text:
 
<script>location.href('http://www.hacked.com')</script>

- acest lucru nu ar fi executat, deoarece va fi salvat ca și cod HTML scăpat, astfel:
 
&lt;script&gt;location.href('http://www.hacked.com')&lt;/script&gt;

Codul este acum sigur pentru a fi afișat pe o pagină sau în interiorul unui e-mail.

De asemenea, vom face alte două lucruri atunci când utilizatorul va trimite formularul:
 
  1. Scoateți caracterele inutile (spațiu suplimentar, filă, linie nouă (extra space, tab, newline)) din datele de intrare ale utilizatorului (cu funcția PHP trim() )
  2. Eliminați backslashes (\) din datele de intrare ale utilizatorului (cu funcția PHP stripslashes())

Următorul pas este să creem o funcție care să facă toate verificările pentru noi (ceea ce este mult mai convenabil decât scrierea aceluiași cod încă o dată).

Vom numi funcția test_input().

Acum, putem verifica fiecare variabilă $_POST cu funcția test_input(), iar scriptul va arata astfel:

Exemplu:
 
<?php
// definiți variabilele și setați valorile goale
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = test_input($_POST["name"]);
  $email = test_input($_POST["email"]);
  $website = test_input($_POST["website"]);
  $comment = test_input($_POST["comment"]);
  $gender = test_input($_POST["gender"]);
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

Observați că la începutul scriptului, verificăm dacă formularul a fost trimis folosind $_SERVER ["REQUEST_METHOD"]. Dacă REQUEST_METHOD este POST, atunci formularul a fost trimis - și ar trebui validat. Dacă nu a fost trimis, săriți validarea și afișați un formular necompletat.

Cu toate acestea, în exemplul de mai sus, toate câmpurile de introducere sunt opționale. Scriptul funcționează bine chiar dacă utilizatorul nu introduce date.

Următorul pas este de a face necesare câmpurile de intrare și de a crea mesaje de eroare, dacă este nevoie.

Fișierele PHP Create/Write. Suprascriere PHP.

Suprascriere PHP (PHP Overwriting)

Acum, că „newfile.txt” conține câteva date, putem arăta ce se întâmplă atunci când deschidem un fișier existent pentru scriere. Toate datele existente vor fi ERASED și vom începe cu un fișier gol.

În exemplul de mai jos, deschidem fișierul nostru existent "newfile.txt" și scriem câteva date noi în el:

Exemplu:
 
<?php
$myfile = fopen("newfile.txt", "w") or die("Nu se poate deschide fișierul!");
$txt = "Mickey Mouse\n";
fwrite($myfile, $txt);
$txt = "Minnie Mouse\n";
fwrite($myfile, $txt);
fclose($myfile);
?>

Dacă acum deschidem fișierul "newfile.txt", atât Ion cât și Ioana au dispărut, și doar datele pe care tocmai le-am scris sunt prezente:
 
Mickey Mouse
Minnie Mouse

Fișierele PHP Create/Write. Fișierul PHP Create - fopen(). Funcția fopen(). Permisiuni de fișiere PHP. Funcția fwrite(). Funcția fclose().

Fișierele PHP Create/Write (PHP File Create/Write)

În acest capitol vă vom învăța cum să creați și să scrieți (create and write) într-un fișier pe server.

Fișierul PHP Create - fopen() (PHP Create File - fopen())

Funcția fopen() este de asemenea folosită pentru a crea (create) un fișier. Poate un pic confuz, dar în PHP, un fișier este creat folosind aceeași funcție folosită pentru a deschide fișiere.

Dacă utilizați fopen() pe un fișier care nu există, acesta îl va crea, având în vedere că fișierul este deschis pentru scriere (writing) (w) sau anexare (appending) (a).

Exemplul de mai jos creează un nou fișier numit "testfile.txt". Fișierul va fi creat în același director în care se află codul PHP:

Exemplu:
 
$myfile = fopen("testfile.txt", "w")

Permisiuni de fișiere PHP (PHP File Permissions)

Funcția fwrite() este utilizată pentru a scrie (write) într-un fișier.

Primul parametru fwrite() conține numele fișierului la care trebuie să scrieți (write), iar al doilea parametru este șirul (string) care trebuie scris.

Exemplul de mai jos scrie (write) câteva nume într-un fișier nou numit "newfile.txt":

Exemplu:
 
<?php
$myfile = fopen("newfile.txt", "w") or die("Nu se poate deschide fișierul!");
$txt = "Ion Popescu\n";
fwrite($myfile, $txt);
$txt = "Ioana Popescu\n";
fwrite($myfile, $txt);
fclose($myfile);
?>

Observați că am scris (write) fișierului "newfile.txt" de două ori. De fiecare dată când am scris în fișier, am trimis șirul (stringul) $txt care a conținut mai întâi „Ion Popescu” și al doilea conținut „Ioana Popescu”. După ce am terminat de scris (write), am închis fișierul folosind funcția fclose().

Dacă deschidem fișierul "newfile.txt", ar arăta astfel:
 
Ion Popescu
Ioana Popescu

PHP Încărcare fișier. Configurare fișier "php.ini". Creare formular HTML​​​​​​. Reguli de urmat pentru formularul HTML.

PHP Încărcare fișier (PHP File Upload)

Cu PHP, este ușor să încărcați fișiere pe server.
Cu toate acestea, cu ușurință apare un pericol, așa că întotdeauna aveți grijă atunci când permiteți încărcarea fișierelor!

Configurați fișierul "php.ini"

În primul rând, asigurați-vă că PHP este configurat pentru a permite încărcarea fișierelor.

În fișierul dvs. "php.ini", căutați directiva file_uploads și setați-l pe On:
 
file_uploads = On


Creați formularul HTML

Apoi, creați un formular HTML care permite utilizatorilor să aleagă fișierul imagine (image file) pe care doresc să îl încarce:
 
​​​​​​​<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
     Selectați imaginea de încărcat:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Încărcați imaginea" name="submit">
</form>

</body>
</html>

Câteva reguli de urmat pentru formularul HTML de mai sus:
 
  • Asigurați-vă că formularul folosește method="post"
  • De asemenea, formularul are nevoie de următorul atribut: enctype = "multipart/form-data". Acesta specifică ce tip de conținut (content-type) trebuie utilizat la trimiterea formularului

Fără cerințele de mai sus, încărcarea fișierului nu va funcționa.

Alte lucruri de remarcat:
 
  • Atributul type="file" al etichetei (tag) <input> arată câmpul de intrare (input field) ca un control de selectare a fișierelor (file-select control), cu un buton "Browse" lângă controlul de intrare (input control)

Formularul de mai sus trimite date unui fișier numit „upload.php”, pe care îl vom crea în continuare.

PHP Încărcare fișier. PHP Creați scriptul de încărcare. Script PHP explicat. Verificați dacă fișierul există deja.

PHP Creați scriptul de încărcare (Create The Upload File PHP Script)

Fișierul "upload.php" conține codul pentru încărcarea unui fișier:
 
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Verificați dacă fișierul imagine este o imagine reală sau o imagine falsă
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "Fișierul este o imagine - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "Fișierul nu este o imagine.";
        $uploadOk = 0;
    }
}
?>

Script PHP explicat:
 
  • $target_dir = "uploads/" - specifică directorul în care urmează să fie plasat fișierul
  • $target_file - specifică calea fișierului care va fi încărcat
  • $uploadOk=1 - nu este încă utilizat (va fi folosit ulterior)
  • $imageFileType - reține extensia fișierului (în minuscule/lower case)
  • În continuare, verificați dacă fișierul imagine este o imagine reală sau o imagine falsă

Notă: Va trebui să creați un nou director numit „uploads” în directorul în care se află fișierulupload.php”. Fișierele încărcate vor fi salvate acolo.

Verificați dacă fișierul există deja

Acum putem adăuga câteva restricții.

În primul rând, vom verifica dacă fișierul există deja în folderul „uploads”. În acest caz, este afișat un mesaj de eroare și $uploadOk este setat la 0:
 
// Verificați dacă fișierul există deja
if (file_exists($target_file)) {
    echo "Ne pare rău, fișierul există deja.";
    $uploadOk = 0;
}

PHP Încărcare fișier. Limitați dimensiunea fișierului. Limitați tipul de fișier.

Limitați dimensiunea fișierului (Limit File Size)

Câmpul de introducere (input field) a fișierului în formularul nostru HTML de mai sus este denumit "fileToUpload".

Acum, vrem să verificăm dimensiunea fișierului. Dacă fișierul este mai mare de 500KB, este afișat un mesaj de eroare și
$uploadOk este setat la 0:
 
// Verificați dimensiunea fișierului
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Ne pare rău, fișierul dvs. este prea mare.";
    $uploadOk = 0;
}

Limitați tipul de fișier (Limit File Type)

Codul de mai jos permite utilizatorilor să încarce fișierele JPG, JPEG, PNG și GIF. Toate celelalte tipuri de fișiere oferă un mesaj de eroare înainte de a seta $uploadOk la 0:
 
//  Permiteți anumite formate de fișiere
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Ne pare rău, sunt permise doar fișierele JPG, JPEG, PNG și GIF.";
    $uploadOk = 0;
}

PHP Încărcare fișier. Încărcați complet scriptul PHP.

Încărcați complet scriptul PHP (Complete Upload File PHP Script)

Fișierul complet "upload.php" arată acum astfel:
 
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Verificați dacă fișierul imagine este o imagine reală sau o imagine falsă
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "Fișierul este o imagine - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "Fișierul nu este o imagine.";
        $uploadOk = 0;
    }
}
// Verificați dacă fișierul există deja
if (file_exists($target_file)) {
    echo "Ne pare rău, fișierul există deja.";
    $uploadOk = 0;
}
// Verificați dimensiunea fișierului
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Ne pare rău, fișierul dvs. este prea mare.";
    $uploadOk = 0;
}
// Permiteți anumite formate de fișiere
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Ne pare rău, sunt permise doar fișierele JPG, JPEG, PNG și GIF.";
    $uploadOk = 0;
}
// Verificați dacă $uploadOk este setat la 0 printr-o eroare
if ($uploadOk == 0) {
    echo "Ne pare rău, fișierul dvs. nu a fost încărcat.";
// dacă totul este în regulă, încercați să încărcați fișierul
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "Fișierul ". basename( $_FILES["fileToUpload"]["name"]). " a fost încărcat.";
    } else {
        echo "Ne pare rău, a fost o eroare la încărcarea fișierului.";
    }
}
?>

Cookie-uri PHP. Ce este un Cookie? Creați cookie-uri cu PHP. Funcția setcookie(). Sintaxă.

Cookie-uri PHP (PHP Cookies)

Ce este un Cookie?

Un cookie este adesea folosit pentru a identifica un utilizator. Un cookie este un fișier mic pe care serverul îl încorporează pe computerul utilizatorului. De fiecare dată când același computer solicită o pagină cu un browser, va trimite și cookie-ul. Cu PHP, puteți crea și recupera valorile cookie-ului.

Creați cookie-uri cu PHP

Un cookie este creat cu funcția setcookie().

Sintaxă
 
setcookie(name, value, expire, path, domain, secure, httponly);

Numai parametrul name este necesar. Toți ceilalți parametrii sunt opționali.

Cookie-uri PHP. Verificați dacă cookie-urile sunt activate. Funcția setcookie(). Variabila array​​​​​​​ $_COOKIE.

Verificați dacă cookie-urile sunt activate

Următorul exemplu creează un mic script care verifică dacă cookie-urile sunt activate. Mai întâi, încercați să creați un cookie de testare cu funcția setcookie(), apoi numărați variabila array $_COOKIE:

Exemplu:
 
<?php
setcookie("test_cookie", "test", time() + 3600, '/');
?>
<html>
<body>

<?php
if(count($_COOKIE) > 0) {
    echo "Cookie-urile sunt activate.";
} else {
    echo "Cookie-urile sunt dezactivate.";
}
?>

</body>
</html>

Cookie-uri PHP. PHP Creare / Recuperare Cookie. Variabila globală $_COOKIE. Funcția isset(). Funcția setcookie(). Funcția setrawcookie().

PHP Creare / Recuperare Cookie (PHP Create/Retrieve a Cookie)

Următorul exemplu creează un cookie numit „user” cu valoarea „Ion Popescu”. Cookie-ul va expira după 30 de zile (86400 * 30).
/” înseamnă că cookie-ul este disponibil pe întregul site web (în caz contrar, selectați directorul preferat).

Vom prelua apoi valoarea cookie-uluiuser” (folosind variabila globală $_COOKIE). De asemenea, folosim funcția isset() pentru a afla dacă cookie-ul este setat:

Exemplu:
 
<?php
$cookie_name = "user";
$cookie_value = "Ion Popescu";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<html>
<body>

<?php
if(!isset($_COOKIE[$cookie_name])) {
    echo "Cookie-ul numit" . $cookie_name . "' nu este setat!";
} else {
    echo "Cookie '" . $cookie_name . "' is set!<br>";
    echo "Valoarea este:" . $_COOKIE[$cookie_name];
}
?>

</body>
</html>

Notă: Funcția setcookie() trebuie să apară BEFORE de eticheta (tag) <html>.

Notă: Valoarea cookie-ului este codificată în mod automat la trimiterea cookie-ului și automat decodificată atunci când este primită (pentru a preveni codificarea URL-ului, utilizați în schimb setrawcookie()).

Cookie-uri PHP. Ștergeți un cookie. Funcția setcookie().

Ștergeți un cookie

Pentru a șterge un cookie, utilizați funcția setcookie() cu o dată de expirare din trecut:

Exemplu:
 
<?php
// setați data de expirare la o oră în urmă
setcookie("user", "", time() - 3600);
?>
<html>
<body>

<?php
echo "Cookie 'user' este șters.";
?>

</body>
</html>

Cookie-uri PHP. Modificați o valoare cookie. Funcția setcookie().

Modificați o valoare cookie

Pentru a modifica un cookie, trebuie doar să setați (din nou) modul cookie folosind funcția setcookie():

Exemplu:
 
<?php
$cookie_name = "user";
$cookie_value = "Alex Ionescu";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/");
?>
<html>
<body>

<?php
if(!isset($_COOKIE[$cookie_name])) {
    echo "Cookie-ul nimit'" . $cookie_name . "' nu este setat!";
} else {
    echo "Cookie'" . $cookie_name . "' este setat!<br>";
    echo "Valoarea este:" . $_COOKIE[$cookie_name];
}
?>

</body>
</html>

Sesiuni PHP. Ce este o sesiune PHP? Variabile de sesiune.

Sesiuni PHP

O sesiune este o modalitate de a stoca informații (în variabile) pentru a fi utilizate în mai multe pagini.
Spre deosebire de un cookie, informațiile nu sunt stocate pe computerul utilizatorilor.

Ce este o sesiune PHP?

Când lucrați cu o aplicație, o deschideți, faceți unele modificări și apoi o închideți. Aceasta seamănă foarte mult cu o sesiune. Calculatorul știe cine ești. Știe când porniți aplicația și când terminați. Dar pe internet există o problemă: serverul web nu știe cine sunteți sau ce faceți, deoarece adresa HTTP nu menține starea.

Variabilele de sesiune (session variables) rezolvă această problemă prin stocarea informațiilor utilizatorului care vor fi utilizate pe mai multe pagini (de exemplu, numele de utilizator, culoarea preferată etc.). În mod implicit, variabilele de sesiune durează până când utilizatorul închide browserul.

Așa deci; Variabilele de sesiune (session variables) conțin informații despre un singur utilizator și sunt disponibile pentru toate paginile dintr-o singură aplicație.

Sfat: Dacă aveți nevoie de o stocare permanentă, poate doriți să stocați datele într-o bază de date.

Sesiuni PHP. Porniți o sesiune PHP. Funcția session_start(). Variabilele de sesiune. Variabila globală PHP: $_SESSION. Funcția session_start().

Porniți o sesiune PHP

O sesiune este pornită cu funcția session_start().

Variabilele de sesiune sunt setate cu variabila globală PHP: $_SESSION.

Acum, hai să creăm o nouă pagină numită "demo_session1.php". În această pagină, începem o nouă sesiune PHP și setăm câteva variabile de sesiune:

Exemplu:
 
<?php
// Începeți sesiunea
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Setați variabile de sesiune
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Variabilele de sesiune sunt setate.";
?>

</body>
</html>

Notă: Funcția session_start() trebuie să fie primul lucru din documentul dvs. Înainte de orice etichete HTML.

Sesiuni PHP. Obțineți valori variabile ale sesiunii PHP. Variabilele de sesiune. Functia session_start(). Variabila globală $_SESSION. Cum functioneazã?

Obțineți valori variabile ale sesiunii PHP

În continuare, creem o altă pagină numită "demo_session2.php". Din această pagină, vom accesa informațiile de sesiune pe care le-am setat pe prima pagină („demo_session1.php”).

Observați că variabilele de sesiune nu sunt transmise individual la fiecare pagină nouă, ci sunt preluate din sesiunea pe care o deschidem la începutul fiecărei pagini (session_start()).

De asemenea, observați că toate valorile variabilei de sesiune sunt stocate în variabila globală $_SESSION:

Exemplu:
 
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Variabilele de sesiune echo care au fost setate pe pagina anterioară
echo "Culoarea preferată este " . $_SESSION["favcolor"] . ".<br>";
echo "Animalul preferat este " . $_SESSION["favanimal"] . ".";
?>

</body>
</html>

Un alt mod de a arăta toate valorile variabilei de sesiune (session variable) pentru o sesiune de utilizator (user session ) este să executați următorul cod:

Exemplu:
 
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
print_r($_SESSION);
?>

</body>
</html>

Cum functioneazã? De unde știe că sunt eu?

Majoritatea ședințelor setează o cheie de utilizator (user-key) pe computerul utilizatorului care arată așa: 765487cf34ert8dede5a562e4f3a7e12. Apoi, când o sesiune este deschisă pe o altă pagină, scanează computerul pentru o cheie de utilizator (user-key). Dacă există o potrivire, aceasta accesează sesiunea, dacă nu, începe o nouă sesiune.

Sesiuni PHP. Modificați o variabilă de sesiune PHP. Distrugeți o sesiune PHP. Funcțiile session_unset() și session_destroy().

Modificați o variabilă de sesiune PHP

Pentru a schimba o variabilă de sesiune, trebuie doar să o suprascrieți:

Exemplu:
 
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// pentru a schimba o variabilă de sesiune, trebuie doar să o rescrieți
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>

</body>
</html>

Distrugeți o sesiune PHP

Pentru a elimina toate variabilele globale ale sesiunii și a distruge sesiunea, utilizați session_unset() și session_destroy():

Exemplu:
 
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// eliminați toate variabilele de sesiune
session_unset();

// distrugeți sesiunea
session_destroy();
?>

</body>
</html>

Filtre PHP. Extensia de filtrare PHP. Filtrele PHP. Funcția filter_list(). De ce să folosești filtrele?

Filtre PHP

Validarea datelor = Determinați dacă datele sunt într-o formă corectă.
Sanitizarea datelor = Eliminați orice caracter ilegal din date.

Extensia de filtrare PHP

Filtrele PHP sunt utilizate pentru validarea și igienizarea intrărilor externe.
Extensia de filtru PHP are multe dintre funcțiile necesare pentru verificarea intrării utilizatorului (user input) și este concepută pentru a face validarea datelor mai ușoară și mai rapidă.

Funcția filter_list() poate fi utilizată pentru a enumera ce oferă extensia de filtru PHP:

Exemplu:
 
<table>
  <tr>
    <td>Nume filtru</td>
    <td>ID filtru</td>
  </tr>
  <?php
  foreach (filter_list() as $id =>$filter) {
      echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
  }
  ?>
</table>

De ce să folosești filtrele?

Multe aplicații web primesc input extern. Intrarea/datele externe pot fi:
 
  • Intrarea utilizatorului dintr-un formular (User input from a form)
  • Cookies
  • Date despre servicii web (Web services data)
  • Variabilele serverului (Server variables)
  • Rezultatele interogării bazei de date (Database query results)

Ar trebui să validați întotdeauna datele externe!

Datele trimise nevalide pot duce la probleme de securitate și vă pot break pagina web!
Folosind filtre PHP puteți fi sigur că aplicația dvs. primește introducerea corectă!

Filtre PHP. Funcția PHP filter_var(). Sanitizarea unui string. Validarea unui număr întreg.

Funcția PHP filter_var()

Funcția filter_var() validează și igienizează datele.

Funcția filter_var() filtrează o singură variabilă cu un filtru specificat. Este nevoie de două bucăți de date (pieces of data):
 
  • Variabila pe care doriți să o verificați
  • Tipul de verificare de utilizat

Sanitizarea unui string

Următorul exemplu utilizează funcția filter_var() pentru a elimina toate etichetele HTML dintr-un șir (string):

Exemplu:
 
<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>

Validarea unui număr întreg (integer)

Următorul exemplu utilizează funcția filter_var() pentru a verifica dacă variabila $int este un număr întreg (integer). Dacă $int este un număr întreg (integer), rezultatul codului de mai jos va fi: „Integer este valid”. Dacă $int nu este un număr întreg (integer), rezultatul va fi: „Integer nu este valid”:

Exemplu:
 
<?php
$int = 100;

if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
    echo("Integer este valid");
} else {
    echo("Integer nu este valid");
}
?>

Sfat: filter_var() și Problema cu 0

În exemplul de mai sus, dacă $int a fost setat pe 0, funcția de mai sus va returna „Integer nu este valid”. Pentru a rezolva această problemă, utilizați codul de mai jos:

Exemplu:
 
<?php
$int = 0;

if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) {
    echo("Integer este valid");
} else {
    echo("Integer nu este valid");
}
?>

Filtre PHP. Validați o adresă IP. Funcția filter_var(). Variabila $ip. Sanitizarea și validarea unei adrese e-mail. Variabila $e-mail. Sanitizarea și validarea unei adrese URL.

Validați o adresă IP

Următorul exemplu utilizează funcția filter_var() pentru a verifica dacă variabila $ip este o adresă IP validă:

Exemplu:
 
<?php
$ip = "127.0.0.1";

if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
    echo("$ip este o adresă IP validă");
} else {
    echo("$ip nu este o adresă IP validă");
}
?>

Sanitizarea și validarea unei adrese e-mail

Următorul exemplu utilizează funcția filter_var() pentru a elimina mai întâi toate caracterele ilegale din variabila $e-mail, apoi verificați dacă este o adresă e-mail validă:

Exemplu:
 
<?php
$email = "[email protected]";

// Eliminați toate caracterele ilegale din e-mail
$email = filter_var($email, FILTER_SANITIZE_EMAIL);

// Validați e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
    echo("$email este o adresă e-mail validă");
} else {
    echo("$email nu este o adresă e-mail validă");
}
?>

Sanitizarea și validarea unei adrese URL

Următorul exemplu utilizează funcția filter_var() pentru a elimina mai întâi toate caracterele ilegale dintr-o adresă URL, apoi verificați dacă $url este o adresă URL validă:

Exemplu:
 
<?php
$url = "https://www.w3schools.com";

// Eliminați toate caracterele ilegale dintr-un URL
$url = filter_var($url, FILTER_SANITIZE_URL);

// Validați adresa URL
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
    echo("$url este o adresă URL validă");
} else {
    echo("$url nu este o adresă URL validă");
}
?>

Filtre PHP avansate. Validați un număr întreg într-un interval. Funcția filter_var(). Validați adresa IPv6. Variabila $ip.

Filtre PHP avansate

Validați un număr întreg (integer) într-un interval

Următorul exemplu utilizează funcția filter_var() pentru a verifica dacă o variabilă este atât de tip INT, cât și între 1 și 200:

Exemplu:
 
<?php
$int = 122;
$min = 1;
$max = 200;

if (filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$min, "max_range"=>$max))) === false) {
    echo("Valoarea variabilă nu se încadrează în intervalul legal");
} else {
    echo("Valoarea variabilă se încadrează în intervalul legal");
}
?>

Validați adresa IPv6

Următorul exemplu utilizează funcția filter_var() pentru a verifica dacă variabila $ip este o adresă IPv6 validă:

Exemplu:
 
<?php
$ip = "2001:0db8:85a3:08d3:1319:8a2e:0370:7334";

if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false) {
    echo("$ip este o adresă IPv6 validă");
} else {
    echo("$ip nu este o adresă IPv6 validă");
}
?>

Filtre PHP avansate. Validați adresa URL - trebuie să conțină QueryString. Funcția filter_var(). Variabila $url. Eliminați caracterele cu valoarea ASCII>127.

Validați adresa URL - trebuie să conțină QueryString

Următorul exemplu utilizează funcția filter_var() pentru a verifica dacă variabila $url este o adresă URL cu un șir de interogare (querystring):

Exemplu:
 
<?php
$url = "";

if (!filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED) === false) {
    echo("$url este o adresă URL validă cu un șir de interogare (query string)");
} else {
    echo("$url nu este o adresă URL validă cu un șir de interogare (query string)");
}
?>

Eliminați caracterele cu valoarea ASCII>127

Următorul exemplu utilizează funcția filter_var() pentru igienizarea unui șir (string). Ambele vor elimina din șir (string) toate etichetele HTML și toate caracterele cu valoarea ASCII>127:

Exemplu:
 
<?php
$str = "<h1>Hello WorldÆØÅ!</h1>";

$newstr = filter_var($str, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
echo $newstr;
?>

PHP JSON. Ce este JSON? Sintaxă pentru stocarea și schimbul de date. PHP și JSON. Funcții integrate pentru a gestiona JSON. PHP - json_encode(). Tablou asociativ într-un obiect JSON.

PHP și JSON

Ce este JSON?

JSON reprezintă o notare a obiectului JavaScript (JavaScript Object Notation) și este o sintaxă pentru stocarea și schimbul de date.

Deoarece formatul JSON este un format bazat pe text (text-based format), acesta poate fi trimis cu ușurință la și de la un server și utilizat ca format de date de orice limbaj de programare.

PHP și JSON

PHP are unele funcții integrate (built-in functions) pentru a gestiona JSON.

În primul rând, vom analiza următoarele două funcții:
 
  • json_encode()
  • json_decode()

PHP - json_encode()

Funcția json_encode() este utilizată pentru a codifica o valoare în formatul JSON.

Exemplu

Acest exemplu arată modul de codificare a unui tablou asociativ (associative array) într-un obiect JSON:
 
<?php
$age = array("Petre"=>35, "Ion"=>37, "Alex"=>43);

echo json_encode($age);
?>

Exemplu

Acest exemplu arată modul de codificare a unui tablou indexat (indexed array) într-un tablou (array) JSON:
 
<?php
$cars = array("Volvo", "BMW", "Toyota");

echo json_encode($cars);
?>

PHP JSON. PHP - json_decode(). Funcția json_decode(). Decodificare date JSON într-un obiect PHP. Decodificare date JSON  într-un tablou asociativ PHP. PHP - Accesarea valorilor decodate.

PHP - json_decode()

Funcția json_decode() este utilizată pentru a decoda un obiect JSON (JSON object) într-un obiect PHP (PHP object) sau într-un tablou asociativ (associative array).

Exemplu

Acest exemplu decodează datele JSON (JSON data) într-un obiect PHP (PHP object):
 
<?php
$jsonobj = '{"Petre":35,"Ion":37,"Alex":43}';

var_dump(json_decode($jsonobj));
?>

Funcția json_decode() returnează în mod implicit un obiect. Funcția json_decode() are un al doilea parametru, iar atunci când este setată la adevărat (true), obiectele JSON (JSON objects) sunt decodate în tablele asociative (associative array).

Exemplu

Acest exemplu decodifică datele JSON (JSON data) într-un tablou asociativ PHP (PHP associative array):
 
<?php
$jsonobj = '{"Petre":35,"Ion":37,"Alex":43}';
var_dump(json_decode($jsonobj, true));
?>

PHP - Accesarea valorilor decodate

Iată două exemple despre cum să accesați valorile decodate dintr-un obiect și dintr-un tablou asociativ (associative array):

Exemplu

Acest exemplu arată cum să accesați valorile dintr-un obiect PHP (PHP object):
 
<?php
$jsonobj = '{"Petre":35,"Ion":37,"Alex":43}';

$obj = json_decode($jsonobj);

echo $obj->Petre;
echo $obj->Ion;
echo $obj->Alex;
?>

Exemplu

Acest exemplu arată cum să accesați valorile dintr-un tablou asociativ PHP (PHP associative array):
 
<?php
$jsonobj = '{"Petre":35,"Ion":37,"Alex":43}';

$arr = json_decode($jsonobj, true);

echo $arr["Petre"];
echo $arr["Ion"];
echo $arr["Alex"];
?>

PHP JSON. PHP - Buclă prin valori. Bucla foreach(). Buclare prin valorile unui obiect PHP. Buclare prin valorile unui tablou asociativ PHP.

PHP - Buclă prin valori (Looping Through the Values)

De asemenea, puteți bucla (loop) valorile cu o buclă (loop) foreach():

Exemplu

Acest exemplu arată cum să vă buclați (loop) prin valorile unui obiect PHP (PHP object):
 
<?php
$jsonobj = '{"Petre":35,"Ion":37,"Alex":43}';

$obj = json_decode($jsonobj);

foreach($obj as $key => $value) {
  echo $key . " => " . $value . "<br>";
}
?>

Exemplu

Acest exemplu arată cum să vă buclați (loop) prin valorile unui tablou asociativ PHP (PHP associative array):
 
<?php
$jsonobj = '{"Petre":35,"Ion":37,"Alex":43}';

$arr = json_decode($jsonobj, true);

foreach($arr as $key => $value) {
  echo $key . " => " . $value . "<br>";
}
?>

PHP - OOP. PHP - Ce sunt clasele și obiectele?

PHP - Ce sunt clasele și obiectele?

Clasele și obiectele sunt cele două aspecte principale ale programării orientate pe obiecte (object-oriented programming).

Priviți următoarea ilustrație pentru a vedea diferența dintre clasă și obiecte:



Deci, o clasă este un șablon pentru obiecte (template for objects), iar un obiect este o instanță a unei clase.

Când obiectele individuale sunt create, moștenesc toate proprietățiile și comportamentele din clasă, dar fiecare obiect va avea valori diferite pentru proprietăți.

Uitați-vă la capitolele următoare pentru a afla mai multe despre OOP.

PHP - OOP. PHP - Ce este OOP? Programarea orientată pe obiecte. Programarea procedurală.

PHP - OOP (Object-Oriented Programming)

PHP - Ce este OOP?

De la PHP5, puteți scrie și cod PHP într-un stil orientat pe obiecte (object-oriented style).

Programarea orientată pe obiecte (Object-Oriented programming) este mai rapidă și mai ușor de executat.

PHP Ce este OOP?

OOP înseamnă programare orientată pe obiecte (Object-Oriented Programming).

Programarea procedurală (Procedural programming) se referă la scrierea procedurilor sau a funcțiilor care efectuează operațiuni asupra datelor, în timp ce programarea orientată pe obiect (object-oriented programming) este despre crearea de obiecte care conțin atât date cât și funcții.

Programarea orientată pe obiecte (object-oriented programming) are mai multe avantaje față de programarea procedurală (procedural programming):
 
  • OOP este mai rapid și mai ușor de executat
  • OOP oferă o structură clară pentru programe
  • OOP ajută la păstrarea codului PHP DRYNu vă repetați” (Don't Repeat Yourself) și face codul mai ușor de întreținut, modificat și depanat
  • OOP face posibilă crearea de aplicații reutilizabile complete, cu mai puțin cod și timp de dezvoltare mai scurt

Sfat: Principiul „Nu vă repetați” (Don't Repeat Yourself) (DRY) se referă la reducerea repetării codului. Ar trebui să extrageți codurile care sunt comune pentru aplicație și să le așezați într-un singur loc și să le reutilizați în loc să le repetați.

PHP OOP - clase și obiecte. Cazul OOP. Definiți o clasă. Sintaxă. Proprietățiile $name și $color. Metodele set_name() și get_name().

PHP OOP - clase și obiecte

O clasă este un șablon pentru obiecte (template for objects), iar un obiect este o instanță a clasei.

Cazul OOP

Să presupunem că avem o clasă numită Fruit. Un fruct poate avea proprietăți precum numele, culoarea, greutatea, etc. (name, color, weight). Putem defini variabile precum $nume, $culoare și $greutate ($name, $color, and $weight) pentru a reține valorile acestor proprietăți.
Când sunt create obiectele individuale (măr, banană/apple, banana, etc.), moștenesc toate proprietățiile și comportamentele din clasă, dar fiecare obiect va avea valori diferite pentru proprietăți.

Definiți o clasă

O clasă este definită folosind cuvântul cheie al clasei (class keyword), urmată de numele clasei și de o pereche de acolade ({}). Toate proprietățiile și metodele sale se încadrează în acolade:

Sintaxă
 
<?php
class Fruit {
  // codul merge aici ...
?>

Mai jos declarăm o clasă numită Fruit compusă din două proprietăți ($nume și $culoare/$name and $color) și două metode set_name() și get_name() pentru setarea și obținerea proprietății $nume ($name):

Exemplu:
 
<?php
class Fruit {
  // Proprietăți
  public $name;
  public $color;

  // Metode
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
}
?>

Notă: Într-o clasă, variabilele se numesc proprietăți și funcțiile se numesc metode!

PHP OOP - clase și obiecte. PHP - Cuvântul cheie $this. Valoarea proprietății $name. Metoda set_name(). PHP - instanceof.

PHP - Cuvântul cheie (Keyword) $this

Cuvântul cheie (Keyword) $this se referă la obiectul curent (current object) și este disponibil numai în cadrul metodelor.

Priviți următorul exemplu:

Exemplu:
 
<?php
class Fruit {
  public $name;
}
$apple = new Fruit();
?>

Deci, unde putem schimba valoarea proprietății $name? Există două moduri:

1. În interiorul clasei (adăugând o metodă set_name() și utilizați $this):

Exemplu:
 
<?php
class Fruit {
  public $name;
  function set_name($name) {
    $this->name = $name;
  }
}
$apple = new Fruit();
$apple->set_name("Apple");
?>

2. În afara clasei (modificând direct valoarea proprietății):

Exemplu:
 
<?php
class Fruit {
  public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
?>

PHP - instanceof

Puteți utiliza cuvântul cheie instanceof (instanceof keyword) pentru a verifica dacă un obiect aparține unei clase specifice:

Exemplu:
 
<?php
$apple = new Fruit();
var_dump($apple instanceof Fruit);
?>

PHP OOP - clase și obiecte. Definire obiecte. Proprietatea $color.

Definiți obiectele

Clasele nu sunt nimic fără obiecte! Putem crea mai multe obiecte dintr-o clasă. Fiecare obiect are toate proprietățiile și metodele definite în clasă, dar vor avea valori de proprietate (property values) diferite.

Obiectele unei clase sunt create folosind noul cuvânt cheie ( new keyword).

În exemplul de mai jos, $apple și $banana sunt exemple ale clasei Fruit:

Exemplu:
 
<?php
class Fruit {
  // Proprietăți
  public $name;
  public $color;

  // Metode
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
}

$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');

echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>

În exemplul de mai jos, adăugăm încă două metode la clasa Fruit, pentru setarea și obținerea proprietății $color:

Exemplu:
 
<?php
class Fruit {
  // Proprietăți
  public $name;
  public $color;

  // Metode
  function set_name($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
  function set_color($color) {
    $this->color = $color;
  }
  function get_color() {
    return $this->color;
  }
}

$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>

PHP OOP - Constructor. Funcția __construct(). Metoda set_name().

PHP OOP - Constructor

PHP - Funcția __construct

Un constructor vă permite să inițializați proprietățiile unui obiect la crearea obiectului.

Dacă creați o funcție __construct(), PHP va apela automat această funcție atunci când creați un obiect dintr-o clasă.

Observați că funcția construct începe cu două underscores (__)!

În exemplul de mai jos vedem că folosirea unui constructor ne scutește de la apelarea metodei set_name() care reduce cantitatea de cod:

Exemplu:
 
<?php
class Fruit {
  public $name;
  public $color;

  function __construct($name) {
    $this->name = $name;
  }
  function get_name() {
    return $this->name;
  }
}

$apple = new Fruit("Apple");
echo $apple->get_name();
?>

Alt exemplu:

Exemplu:
 
<?php
class Fruit {
  public $name;
  public $color;

  function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  function get_name() {
    return $this->name;
  }
  function get_color() {
    return $this->color;
  }
}

$apple = new Fruit("Apple", "red");
echo $apple->get_name();
echo "<br>";
echo $apple->get_color();
?>

PHP OOP - Destructor. PHP - Funcția __destruct.

PHP OOP - Destructor

PHP - Funcția __destruct

Se numește un destructor atunci când obiectul este distrus sau scriptul este oprit sau ieșit.

Dacă creați o funcție __destruct(), PHP va apela automat această funcție la sfârșitul scriptului.

Observați că funcția destruct începe cu două sublinieri (underscores) (__)!

Exemplul de mai jos are o funcție __construct() care se numește automat atunci când creați un obiect dintr-o clasă și o funcție __destruct() care este apelată automat la sfârșitul scriptului:

Exemplu:
 
<?php
class Fruit {
  public $name;
  public $color;

  function __construct($name) {
    $this->name = $name;
  }
  function __destruct() {
    echo "The fruit is {$this->name}.";
  }
}

$apple = new Fruit("Apple");
?>

Alt exemplu:

Exemplu:
 
<?php
class Fruit {
  public $name;
  public $color;

  function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  function __destruct() {
    echo "Fructul este {$this->name} și culoarea este {$this->color}.";
  }
}

$apple = new Fruit("Apple", "red");
?>

Sfat: Deoarece constructorii și distrugătorii (constructors and destructors) ajută la reducerea cantității de cod, sunt foarte utili!

PHP OOP - Modificatori access. PHP - Modificatori access. Funcția set_color(). Funcția set_weight().

PHP OOP - Modificatori access

PHP - Modificatori access

Proprietățiile și metodele pot avea modificatori access care controlează unde pot fi accesate.

Există trei modificatori access:
 
  • public - proprietatea sau metoda pot fi accesate de oriunde. Aceasta este implicită.
  • protected - proprietatea sau metoda pot fi accesate în cadrul clasei și prin clase derivate din acea clasă.
  • private - proprietatea sau metoda pot fi accesate DOAR în cadrul clasei.

În exemplul următor, am adăugat trei modificatori access diferiți la cele trei proprietăți. Aici, dacă încercați să setați numele proprietății (name property), va funcționa bine (deoarece numele proprietății (name property) este public).

Cu toate acestea, dacă încercați să setați culoarea sau greutatea proprietății (color and weight property), aceasta va duce la o eroare fatală (fatal error) (deoarece proprietățiile de culoare și greutate (color and weight property) sunt protejate și private):

Exemplu:
 
<?php
class Fruit {
  public $name;
  protected $color;
  private $weight;
}

$mango = new Fruit();
$mango->name = 'Mango'; // OK
$mango->color = 'Yellow'; // ERROR
$mango->weight = '300'; // ERROR
?>

În următorul exemplu, am adăugat modificatori access la două metode.

Aici, dacă încercați să apelați funcția set_color() sau set_weight(), va rezulta o eroare fatală (fatal error) (deoarece cele două funcții sunt considerate protejate și private), chiar dacă toate proprietățiile sunt publice:

Exemplu:
 
<?php
class Fruit {
  public $name;
  public $color;
  public $weight;

  function set_name($n) {  // o funcție publică (implicit)
    $this->name = $n;
  }
  protected function set_color($n) { // o funcție protejată
    $this->color = $n;
  }
  private function set_weight($n) { // o funcție privată
    $this->weight = $n;
  }
}

$mango = new Fruit();
$mango->set_name('Mango'); // OK
$mango->set_color('Yellow'); // ERROR
$mango->set_weight('300'); // ERROR
?>

PHP OOP - Moștenire. PHP - Ce este Moștenirea? Moștenirea în OOP. Clasa inherited. Clasa child. Clasa parent. Clasa Strawberry. Clasa Fruit. Proprietățiile $name și $color. Metodele publice __construct() și intro(). Metoda message().

PHP OOP - Moștenire (PHP OOP - Inheritance)

PHP - Ce este Moștenirea? (PHP - Ce este Inheritance?)

Moștenirea în OOP (Inheritance în OOP) = Când o clasă derivă dintr-o altă clasă.

Clasa child (copil) va moșteni toate proprietățiile și metodele publice și protejate de la clasa parent (părinte). În plus, poate avea propriile sale proprietăți și metode.

O clasă inherited (moștenită) este definită folosind cuvântul cheie extensie (extends keyword).

Să ne uităm la un exemplu:

Exemplu:
 
<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  public function intro() {
    echo "Fructul este {$this->name} și culoarea este {$this->color}.";
  }
}

// Strawberry este moștenită (inherited) de la Fruit
class Strawberry extends Fruit {
  public function message() {
    echo "Am I a fruit or a berry? ";
  }
}
$strawberry = new Strawberry("Strawberry", "red");
$strawberry->message();
$strawberry->intro();
?>

Exemplu explicat

Clasa Strawberry este moștenită (inherited) de la clasa Fruit.

Aceasta înseamnă că clasa Strawberry poate folosi numele public $name și proprietățiile $color, precum și metodele publice __construct() și intro() din clasa Fruit din cauza moștenirii (inheritance).

Clasa Strawberry are, de asemenea, propria sa metodă: message().

PHP OOP - Moștenire. PHP - Cuvântul cheie final. Prevenire clasa moștenire. Prevenire suprasolicitarea metodei.

PHP - Cuvântul cheie final

Cuvântul cheie final (the final keyword) poate fi utilizat pentru a preveni moștenirea clasei (class inheritance) sau pentru a preveni suprasolicitarea metodei (method overriding).

Următorul exemplu arată cum să preveniți clasa moștenire  (class inheritance):

Exemplu:
 
<?php
final class Fruit {
  // ceva cod
}

// va duce la eroare
class Strawberry extends Fruit {
  // ceva cod
}
?>

Următorul exemplu arată cum să preveniți suprasolicitarea metodei (method overriding):

Exemplu:
 
<?php
class Fruit {
  final public function intro() {
    // ceva cod
  }
}

class Strawberry extends Fruit {
  // va duce la eroare
  public function intro() {
    // ceva cod
  }
}
?>

PHP OOP - Moștenire. PHP - Moștenire și modificator access protejat. Metoda protejată intro().

PHP - Moștenire și modificator access protejat

În capitolul anterior am aflat că proprietățiile sau metodele protejate pot fi accesate în cadrul clasei și prin clase derivate din acea clasă. Ce inseamna asta?

Să ne uităm la un exemplu:

Exemplu:
 
<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro() {
    echo "Fructul este {$this->name} și culoarea este {$this->color}.";
  }
}

class Strawberry extends Fruit {
  public function message() {
    echo "Sunt un fruit sau o berry? ";
  }
}

//  Încercați să apelați toate cele trei metode din afara clasei
$strawberry = new Strawberry("Strawberry", "red");  // OK. __construct() este public
$strawberry->message(); // OK. message() este public
$strawberry->intro(); // ERROR. intro() este protejat
?>

În exemplul de mai sus vedem că dacă încercăm să apelăm la o metodă protejată (intro()) din afara clasei, vom primi o eroare. Metodele publice vor funcționa bine!

Să ne uităm la un alt exemplu:

Exemplu:
 
<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro() {
    echo "Fructul este{$this->name} și culoarea este {$this->color}.";
  }
}

class Strawberry extends Fruit {
  public function message() {
    echo "Sunt un fruit sau o berry? ";
    // Apelați metoda protejată din cadrul clasei derivate - OK
    $this -> intro();
  }
}

$strawberry = new Strawberry("Strawberry", "red"); // OK. __construct() este public
$strawberry->message(); // OK. message() este public și apelează intro() (care este protejat) din cadrul clasei derivate
?>

În exemplul de mai sus vedem că toate funcționează bine! Se datorează faptului că numim metoda protejată (intro()) din interiorul clasei derivate.

PHP OOP - Moștenire. PHP - Metode ereditare de moștenire. Metode moștenite. Clasa child. Metodele __construct() și intro().

PHP - Metode ereditare de moștenire (PHP - Overriding Inherited Methods)

Metodele moștenite (Inherited methods) pot fi anulate prin redefinirea metodelor (folosiți același nume) în clasa child (copil).

Priviți exemplul de mai jos. Metodele __construct() și intro() din clasa child (copil) (Strawberry) vor înlocui metodele __construct() și intro() din clasa parent (părinte) (Fruit):

Exemplu:
 
<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  public function intro() {
    echo "Fructul este {$this->name} și culoarea este {$this->color}.";
  }
}

class Strawberry extends Fruit {
  public $weight;
  public function __construct($name, $color, $weight) {
    $this->name = $name;
    $this->color = $color;
    $this->weight = $weight;
  }
  public function intro() {
    echo "Fructul este {$this->name}, culoarea este {$this->color}, și greutatea este {$this->weight} gram.";
  }
}

$strawberry = new Strawberry("Strawberry", "red", 50);
$strawberry->intro();
?>

PHP OOP - Constante de clasă. PHP - Constante de clasă.

PHP OOP - Constante de clasă (PHP OOP - Class Constants)

PHP - Constante de clasă (PHP - Class Constants)

Constantele nu pot fi schimbate odată ce sunt declarate.

Constantele de clasă (Class constants) pot fi utile dacă trebuie să definiți unele date constante (constant data) dintr-o clasă.

O constantă de clasă (class constant) este declarată în interiorul unei clase cu ajutorul cuvântului cheie (keyword) const.

Constantele de clasă (class constants) sunt case-sensitive. Cu toate acestea, se recomandă numirea constantelor cu litere mari (uppercase letters).

Putem accesa o constantă din afara clasei folosind numele clasei (class name) urmată de operatorul de rezoluție al domeniului (::) urmată de numele constant (constant name), cum este aici:

Exemplu:
 
<?php
class Goodbye {
  const LEAVING_MESSAGE = "Vă mulțumim că ați vizitat lectii-virtuale.ro!";
}

echo Goodbye::LEAVING_MESSAGE;
?>

Sau, putem accesa o constantă din interiorul clasei folosind cuvântul cheie (keyword) auto urmat de operatorul de rezoluție de aplicare (::) urmat de numele constant (constant name), cum este aici:

Exemplu:
 
<?php
class Goodbye {
  const LEAVING_MESSAGE = "Vă mulțumim că ați vizitat lectii-virtuale.ro!";
  public function byebye() {
    echo self::LEAVING_MESSAGE;
  }
}

$goodbye = new Goodbye();
$goodbye->byebye();
?>

PHP OOP - Clase abstracte. PHP - Care sunt clasele și metodele abstracte? Clasa parent. Clasa child. Sintaxă.

PHP OOP - Clase abstracte

PHP - Care sunt clasele și metodele abstracte?

Clasele și metodele abstracte sunt atunci când clasa parent (părinte) are o metodă numită, dar au nevoie de o clasă (e) child (copil) pentru a finaliza sarcinile.

O clasă abstractă (abstract class) este o clasă care conține cel puțin o metodă abstractă (abstract method). O metodă abstractă (abstract method) este o metodă care este declarată, dar care nu este implementată în cod.

O clasă sau o metodă abstractă (abstract method) este definită de cuvântul cheie (keyword) abstract:

Sintaxă
 
<?php
abstract class ParentClass {
  abstract public function someMethod1();
  abstract public function someMethod2($name, $color);
  abstract public function someMethod3() : string;
}
?>

La moștenirea (inheriting) de la o clasă abstractă (abstract class), metoda clasei copil (child class method) trebuie definită cu același nume și cu același modificator access mai puțin restricționat. Deci, dacă metoda abstractă (abstract method) este definită ca protejată, metoda clasei copil (child class method) trebuie definită fie protejată, fie publică, dar nu privată. De asemenea, tipul și numărul de argumente solicitate trebuie să fie aceleași. Cu toate acestea, clasele pentru copii (child classes) pot avea în plus argumente opționale.

Deci, atunci când o clasă de copii (child class) este moștenită (inherited) de la o clasă abstractă (abstract class), avem următoarele reguli:
 
  • Metoda clasei copil (child class method) trebuie definită cu același nume și redeclarea metodei abstracte părinte (parent abstract method).
  • Metoda clasei pentru copii (child class method) trebuie definită cu același  sau cu un mai puțin restricționat modificator access.
  • Numărul de argumente solicitate trebuie să fie același. Cu toate acestea, clasa pentru copii (child class) poate avea în plus argumente opționale.

PHP OOP - Clase abstracte. Exemplu. Exemplu explicat. Proprietatea publică $name. Metoda publică __construct().

PHP OOP - Clase abstracte

Să ne uităm la un exemplu:

Exemplu:
 
<?php
// Clasa părinte (Parent class)
abstract class Car {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract public function intro() : string;
}

// Clasele copil(Child classes)
class Audi extends Car {
  public function intro() : string {
    return "Alege calitatea germană! Sunt un $this->name!";
  }
}

class Volvo extends Car {
  public function intro() : string {
    return "Mândru că sunt suedez! Sunt un $this->name!";
  }
}

class Citroen extends Car {
  public function intro() : string {
    return "Extravaganța franceză! Sunt un a $this->name!";
  }
}

// Creați obiecte din clasele copil (child classes)
$audi = new audi("Audi");
echo $audi->intro();
echo "<br>";

$volvo = new volvo("Volvo");
echo $volvo->intro();
echo "<br>";

$citroen = new citroen("Citroen");
echo $citroen->intro();
?>

Exemplu explicat

Clasele Audi, Volvo și Citroen sunt moștenite (inherited) de la clasa Auto. Aceasta înseamnă că clasele Audi, Volvo și Citroen pot utiliza proprietatea publică $name precum și metoda publică __construct() din clasa Car din cauza moștenirii (inheritance).

Dar, intro() este o metodă abstractă (abstract method) care ar trebui definită în toate clasele copil (child classes) și ar trebui să returneze un șir (string).

PHP OOP - Clase abstracte. PHP - mai multe exemple de clase abstracte. Metoda abstractă cu un argument. Metoda abstractă cu un argument și clasa copil cu două argumente opționale.

PHP - mai multe exemple de clase abstracte

Să ne uităm la un alt exemplu în care metoda abstractă (abstract method) are un argument:

Exemplu:
 
<?php
abstract class ParentClass {
  // Metoda abstractă (abstract method)cu un argument
  abstract protected function prefixName($name);
}

class ChildClass extends ParentClass {
  public function prefixName($name) {
    if ($name == "Ion Popescu") {
      $prefix = "Mr.";
    } elseif ($name == "Ioana Popescu") {
      $prefix = "Mrs.";
    } else {
      $prefix = "";
    }
    return "{$prefix} {$name}";
  }
}

$class = new ChildClass;
echo $class->prefixName("Ion Popescu");
echo "<br>";
echo $class->prefixName("Ioana Popescu");
?>

Să analizăm un alt exemplu în care metoda abstractă (abstract method) are un argument, iar clasa copil (child class) are două argumente opționale care nu sunt definite în metoda abstractă a părintelui (parent's abstract method):

Exemplu:
 
<?php
abstract class ParentClass {
  // Metoda abstractă (abstract method) cu un argument
  abstract protected function prefixName($name);
}

class ChildClass extends ParentClass {
  // Clasa copil (child class) poate defini argumente opționale care nu sunt în metoda abstractă a părintelui (parent's abstract method)
  public function prefixName($name, $separator = ".", $greet = "Dear") {
    if ($name == "Ion Popescu") {
      $prefix = "Mr";
    } elseif ($name == "Ioana Popescu") {
      $prefix = "Mrs";
    } else {
      $prefix = "";
    }
    return "{$greet} {$prefix}{$separator} {$name}";
  }
}

$class = new ChildClass;
echo $class->prefixName("Ion Popescu");
echo "<br>";
echo $class->prefixName("Ioana Popescu");
?>

PHP OOP - Trăsături. PHP - Ce sunt trăsăturile? Sintaxă.

PHP OOP - Trăsături (Traits)

PHP - Ce sunt trăsăturile? (Traits)

PHP acceptă numai moștenirea unică (single inheritance): o clasă copil (child class) poate moșteni doar de la un singur părinte (parent).

Deci, dacă o clasă trebuie să moștenească mai multe comportamente? Trăsăturile OOP (OOP traits) rezolvă această problemă.

Trăsăturile (Traits) sunt utilizate pentru a declara metode (methods) care pot fi utilizate în mai multe clase. Trăsăturile (Traits) pot avea metode (methods) și metode abstracte (abstract methods) care pot fi utilizate în mai multe clase, iar metodele (methods) pot avea orice modificator access (public, privat sau protejat).
Trăsăturile (Traits) sunt declarate cu ajutorul cuvântului cheie trait (trait keyword):

Sintaxă
 
<?php
trait TraitName {
  // ceva cod...
}
?>

Pentru a utiliza o trăsătură (trait) într-o clasă, utilizați cuvântul cheie de utilizare (use keyword):

Sintaxă
 
<?php
class MyClass {
  use TraitName;
}
?>

PHP OOP - Trăsături. PHP - Folosirea mai multor trăsături. Exemplu explicat.

PHP - Folosirea mai multor trăsături (traits)

Să ne uităm la un alt exemplu:

Exemplu:
 
<?php
trait message1 {
  public function msg1() {
    echo "OOP este distractiv! ";
  }
}

trait message2 {
  public function msg2() {
    echo "OOP reduce duplicarea codului!";
  }
}

class Welcome {
  use message1;
}

class Welcome2 {
  use message1, message2;
}

$obj = new Welcome();
$obj->msg1();
echo "<br>";

$obj2 = new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>

Exemplu explicat

Aici, declarăm două trăsături (traits): message1 și message2. Apoi, creăm două clase: Welcome și Welcome2. Prima clasă (Welcome) folosește trăsături (traits) message1, iar cea de-a doua (Welcome2) folosește atât caracteristicile message1 cât și message2 (mai multe trăsături (traits) sunt separate prin virgulă).

PHP OOP - Trăsături. Exemplu. Exemplu explicat.

PHP OOP - Trăsături (Traits)

Să ne uităm la un exemplu:

Exemplu:
 
<?php
trait message1 {
public function msg1() {
    echo "OOP este distractiv! ";
  }
}

class Welcome {
  use message1;
}

$obj = new Welcome();
$obj->msg1();
?>

Exemplu explicat

Aici, declarăm o singură trăsătură (trait): message1. Apoi, creem o clasă: Welcome. Clasa utilizează trăsătura (trait) și toate metodele (methods) din trăsătură (trait) vor fi disponibile în clasă.

Dacă alte clase trebuie să utilizeze funcția msg1(), pur și simplu folosiți trăsătura (trait) message1 din acele clase. Acest lucru reduce duplicarea codului, deoarece nu este nevoie să redeclarați din nou aceeași metodă (method).

PHP OOP - Metode statice. PHP - Mai multe despre metodele statice. Metode statice și metode nestatice. Metoda statică publică.

PHP - Mai multe despre metodele statice

O clasă poate avea atât metode statice, cât și nestatice (static and non-static methods). O metodă statică (static method) poate fi accesată dintr-o metodă din aceeași clasă folosind cuvântul cheie self (self keyword) și dublul punct (::):

Exemplu:
 
<?php
class greeting {
  public static function welcome() {
    echo "Hello World!";
  }

  public function __construct() {
    self::welcome();
  }
}

new greeting();
?>

Metodele statice (static methods) pot fi, de asemenea, apelate la metode din alte clase. Pentru a face acest lucru, metoda statică (static method)  ar trebui să fie publică:

Exemplu:
 
<?php
class greeting {
  public static function welcome() {
    echo "Hello World!";
  }
}

class SomeOtherClass {
  public function message() {
    greeting::welcome();
  }
}
?>

PHP OOP - Metode statice. Sintaxă. Exemplu explicat.

PHP OOP - Metode statice

PHP - Metode statice

Metodele statice (static methods) pot fi apelate direct - fără a crea o instanță a unei clase.

Metodele statice (static methods) sunt declarate cu ajutorul cuvântului cheie static (static keyword):

Sintaxă
 
<?php
class ClassName {
  public static function staticMethod() {
    echo "Hello World!";
  }
}
?>

Pentru a accesa o metodă statică (static method), folosiți numele clasei (class name), dublul punct (::) și numele metodei (method name):

Sintaxă
 
ClassName::staticMethod();

Exemplu:
 
<?php
class greeting {
  public static function welcome() {
    echo "Hello World!";
  }
}

// Apelare metoda statică (static method)
greeting::welcome();
?>

Exemplu explicat

Aici, declarăm o metodă statică (static method): welcome(). Apoi, apelăm metodă statică (static method) folosind numele clasei (class name), dublul punct (::) și numele metodei (method name(fără a crea mai întâi o clasă).

PHP OOP - Metode statice. Apelare metodă statică dintr-o clasă copil.

PHP OOP - Metode statice.

Pentru a apela o metodă statică (static method) dintr-o clasă copil (child class), utilizați cuvântul cheie părinte (parent keyword) din cadrul clasei copil (child class). Aici, metoda statică (static method) poate fi publică sau protejată.

Exemplu:
 
<?php
class domain {
  protected static function getWebsiteName() {
    return "lectii-virtuale.ro";
  }
}

class domainlv extends domain {
  public $websiteName;
  public function __construct() {
    $this->websiteName = parent::getWebsiteName();
  }
}

$domainlv = new domainlv;
echo $domainlv -> websiteName;
?>

PHP OOP - Proprietăți statice. PHP - Mai multe despre proprietățile statice.

PHP - Mai multe despre proprietățile statice

O clasă poate avea atât proprietăți statice, cât și nestatice (static and non-static properties). O proprietate statică (static property) poate fi accesată dintr-o metodă din aceeași clasă folosind cuvântul cheie self (self keyword) și două puncte duble (::):

Exemplu:
 
<?php
class pi {
  public static $value=3.14159;
  public function staticValue() {
    return self::$value;
  }
}

$pi = new pi();
echo $pi->staticValue();
?>

Pentru a apela o proprietate statică (static property) dintr-o clasă copil (child class), utilizați cuvântul cheie părinte (parent keyword) din cadrul clasei copil (child class):

Exemplu:
 
<?php
class pi {
  public static $value=3.14159;
}

class x extends pi {
  public function xStatic() {
    return parent::$value;
  }
}

// Obțineți valoarea proprietății statice (static property ) direct prin intermediul clasei copil (child class)
echo x::$value;

//  sau obțineți valoarea proprietății statice (static property) prin metoda xStatic() (xStatic() method)
$x = new x();
echo $x->xStatic();
?>

PHP OOP - Proprietăți statice. PHP - Proprietăți statice. Sintaxă. Exemplu explicat. Proprietatea statică $value.

PHP OOP - Proprietăți statice

PHP - Proprietăți statice

Proprietățile statice (static properties) pot fi apelate direct - fără a crea o instanță a unei clase.

Proprietățile statice (static properties) sunt declarate cu ajutorul cuvântului cheie static (static keyword):

Sintaxă
 
<?php
class ClassName {
  public static $staticProp = "lectii-virtuale";
}
?>

Pentru a accesa o proprietate statică, folosiți numele clasei (class name), două puncte duble (::) și numele proprietății (property name):

Sintaxă
 
ClassName::staticProp;

Să ne uităm la un exemplu:

Exemplu:
 
<?php
class pi {
  public static $value = 3.14159;
}

// Obțineți proprietăți statice (static property)
echo pi::$value;
?>

Exemplu explicat

Aici, declarăm o proprietate statică (static property): $value. Apoi, facem echo valoarea proprietății statice folosind numele clasei (class name), două puncte duble (::) și numele proprietății (property name): (fără a crea mai întâi o clasă).

Bază de date PHP MySQL. Sistem de baze de date PHP + MySQL. Interogări baze de date. Date despre baza de date MySQL.

Sistem de baze de date PHP + MySQL

PHP combinat cu MySQL este cross-platform (puteți dezvolta în Windows și puteți lucra pe o platformă Unix)

Database Queries

Un query este o întrebare sau o solicitare (question or a request).

Putem interoga (query) o bază de date (database) pentru informații specifice și putem returna un set de înregistrări.

Uită-te la următoarea interogare (query) (folosind SQL standard):
 
SELECT LastName FROM Employees

Interogarea (query) de mai sus selectează toate datele din coloanaLastName” din tabelulEmployees”.

Descărcați baza de date MySQL

Dacă nu aveți un server PHP cu o bază de date MySQL, îl puteți descărca gratuit aici: http://www.mysql.com

Date despre baza de date MySQL

MySQL este sistemul de baze de date standard de facto pentru site-urile web cu volume IMPORTANTE atât de date cât și de utilizatori finali (end-users) (cum ar fi Facebook, Twitter și Wikipedia).

Un alt lucru despre MySQL este că poate fi redus pentru a sprijini aplicațiile bazei de date încorporate.

Bază de date PHP MySQL. Ce este MySQL? Sistem de baze de date.

Bază de date PHP MySQL

Cu PHP, vă puteți conecta la bazele de date și manipula bazele de date.

MySQL este cel mai popular sistem de baze de date folosit cu PHP.

Ce este MySQL?
 
  • MySQL este un sistem de baze de date utilizat pe web
  • MySQL este un sistem de baze de date care rulează pe un server
  • MySQL este ideal atât pentru aplicații mici cât și pentru aplicații mari
  • MySQL este foarte rapid, fiabil și ușor de utilizat
  • MySQL folosește SQL standard
  • MySQL compilează pe mai multe platforme
  • MySQL este gratuit pentru a fi descărcat și utilizat
  • MySQL este dezvoltat, distribuit și susținut de Oracle Corporation
  • MySQL poartă numele fiicei cofondatoare Monty Widenius: My

Datele dintr-o bază de date MySQL sunt stocate în tabele. Un tabel este o colecție de date conexe și este format din coloane și rânduri (columns and rows).

Categoric bazele de date sunt utile pentru stocarea informațiilor. O companie poate avea o bază de date cu următoarele tabele:
 
  • Angajați (Employees)
  • Produse (Products)
  • Clienți (Customers)
  • Comenzi (Orders)

PHP Conectează-te la MySQL. Ar trebui să folosesc MySQLi sau PDO? Avantaje MySQLi și PDO. Exemple MySQL atât în ​​MySQLi cât și în sintaxa PDO. Instalare MySQLi. Instalare PDO.

PHP Conectează-te la MySQL

PHP 5 și versiunile ulterioare pot lucra cu o bază de date MySQL folosind:
 
  • Extensia MySQLi („i” este îmbunătățită)
  • PDO (Obiecte de date PHP/PHP Data Objects)

Versiunile anterioare de PHP au folosit extensia MySQL. Cu toate acestea, această extindere a fost depășită în 2012.

Ar trebui să folosesc MySQLi sau PDO?

Dacă aveți nevoie de un răspuns scurt, ar fi „Orice dorți”.

Atât MySQLi, cât și PDO au avantajele lor:

PDO va funcționa pe 12 sisteme de baze de date diferite, în timp ce MySQLi va funcționa doar cu baze de date MySQL.

Deci, dacă trebuie să schimbați proiectul pentru a utiliza o altă bază de date, PDO ușurează procesul. Trebuie doar să schimbați șirul de conexiune (connection string) și câteva interogari (queries). Cu MySQLi, va trebui să rescrieți întregul cod - interogările (queries) sunt incluse.

Ambele sunt orientate pe obiecte (object-oriented), dar MySQLi oferă și o API procedurală (procedural API).

Ambele acceptă declarații pregătite (Prepared Statements). Declarațiile pregătite (Prepared Statements) protejează împotriva
injecției SQL și sunt foarte importante pentru securitatea aplicațiilor web.

Exemple MySQL atât în ​​MySQLi cât și în sintaxa PDO

Aici și în capitolele următoare vom demonstra trei moduri de a lucra cu PHP și MySQL:
 
  • MySQLi (orientat pe obiect/object-oriented)
  • MySQLi (procedural)
  • PDO

Instalare MySQLi

Pentru Linux și Windows: Extensia MySQLi este instalată automat în majoritatea cazurilor, atunci când este instalat pachetul mysql php5.

Pentru detalii despre instalare, accesați:

http://php.net/manual/en/mysqli.installation.php

Instalare PDO

Pentru detalii despre instalare, accesați: http://php.net/manual/en/pdo.installation.php

PHP Conectează-te la MySQL. Deschideți o conexiune la MySQL. Exemplu (MySQLi orientat pe obiect). Exemplu (MySQLi Procedural).

Deschideți o conexiune la MySQL

Înainte de a putea accesa datele din baza de date MySQL, trebuie să ne putem conecta la server:

Exemplu (MySQLi orientat pe obiect/MySQLi Object-Oriented)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password);

// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}
echo "Conectat cu succes";
?>

Notă pentru exemplul object-oriented de mai sus:

$connect_error a fost spart până la PHP 5.2.9 și 5.3.0. Dacă trebuie să vă asigurați compatibilitatea cu versiunile PHP înainte de 5.2.9 și 5.3.0, utilizați în schimb următorul cod:
 
// Verificați conexiunea
if (mysqli_connect_error()) {
    die("Conexiunea la baza de date a eșuat: " . mysqli_connect_error());
}


Exemplu (MySQLi Procedural)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password);

// Verificați conexiunea
if (!$conn) {
    die("Conexiunea a eșuat: " . mysqli_connect_error());
}
echo "Conexiunea s-a realizat cu succes";
?>

PHP Conectează-te la MySQL. Exemplu (PDO). Block-ul try{}. Block-ul catch(){}. Închidere conexiune. MySQLi orientat pe obiect. MySQLi Procedural.

Exemplu (PDO)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
    $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
    // setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Conectat cu succes";
    }
catch(PDOException $e)
    {
    echo "Conexiune eșuată: " . $e->getMessage();
    }
?>

Notă: În exemplul PDO de mai sus am specificat și o bază de date (myDB). PDO necesită o bază de date validă pentru a vă conecta. Dacă nu este specificată nicio bază de date, se face o excepție.

Sfat: Un mare beneficiu al PDO este că are o clasă de excepție pentru a rezolva problemele care pot apărea în interogările noastre de baze de date (database queries). Dacă o excepție este făcută în block-ul try{}, scriptul nu mai este executat și curge direct către primul block catch(){}.

Închideți conexiunea

Conexiunea va fi închisă automat la finalizarea scriptului. Pentru a închide înainte conexiunea, utilizați următoarele:

MySQLi Object-Oriented:
 
$conn->close();

MySQLi Procedural:
 
mysqli_close($conn);

PDO:
 
$conn = null;

PHP Creare bază de date MySQL. Exemplu (MySQLi Procedural). Exemplu (PDO). Block-ul try{}. Block-ul catch(){}.

Exemplu (MySQLi Procedural)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password);
// Verificați conexiunea
if (!$conn) {
    die("Conexiunea a eșuat: " . mysqli_connect_error());
}

// Creați baza de date
$sql = "CREATE DATABASE myDB";
if (mysqli_query($conn, $sql)) {
    echo "Bază de date creată cu succes";
} else {
    echo "Eroare la crearea bazei de date: " . mysqli_error($conn);
}

mysqli_close($conn);
?>

Notă: Următorul exemplu PDO creează o bază de date denumită "myDBPDO":

Exemplu (PDO)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
    $conn = new PDO("mysql:host=$servername", $username, $password);
    // setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "CREATE DATABASE myDBPDO";
    // utilizați exec() deoarece nu se returnează niciun rezultat
    $conn->exec($sql);
    echo "Bază de date creată cu succes<br>";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

Sfat: Un mare beneficiu al PDO este că are o clasă de excepție pentru a rezolva problemele care pot apărea în interogările noastre de baze de date (database queries). Dacă o excepție este făcută în block-ul try{}, scriptul nu mai este executat și este trimis direct către primul block catch(){}. În block-ul catch de mai sus afișam în echo instrucțiunea SQL și mesajul de eroare generat.

PHP Creare bază de date MySQL. Creare bază de date MySQL folosind MySQLi și PDO. Instrucțiunea CREATE DATABASE. Exemplu (MySQLi Orientat pe obiect).

PHP Creați o bază de date MySQL

O bază de date constă dintr-una sau mai multe tabele.

Veți avea nevoie de privilegii speciale CREATE pentru a crea sau pentru a șterge o bază de date MySQL.

Creați o bază de date MySQL folosind MySQLi și PDO

Instrucțiunea CREATE DATABASE este utilizată pentru a crea o bază de date în MySQL.

Următoarele exemple creează o bază de date denumită "myDB":

Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}

// Creați baza de date
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
    echo "Baza de date creată cu succes";
} else {
    echo "Eroare la crearea bazei de date: " . $conn->error;
}

$conn->close();
?>

Notă: Când creați o bază de date nouă, trebuie să specificați doar primele trei argumente pentru obiectul mysqli (nume de server, nume de utilizator și parolă/servername, username and password).

Sfat: Dacă trebuie să folosiți un port specific, adăugați un șir gol (empty string) pentru argumentul numelui bazei de date (database-name argument), astfel: new mysqli("localhost", "username", "password", "", port)

PHP MySQL Creare Tabel. Creați un tabel MySQL folosind MySQLi și PDO. Instrucțiunea CREATE TABLE.

PHP MySQL Create Table

Un tabel de baze de date (database table) are propriul nume unic și este format din coloane și rânduri (columns and rows).

Creați un tabel MySQL folosind MySQLi și PDO

Instrucțiunea CREATE TABLE este utilizată pentru a crea un tabel în MySQL.

Vom crea un tabel numit „MyGuests”, cu cinci coloane: "id", "firstname", "lastname", "email" și "reg_date":
 
CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

Note pentru tabelul de mai sus:

Tipul de date (data type) specifică ce tip de date poate conține coloana.

După tipul de date (data type), puteți specifica alte atribute opționale pentru fiecare coloană:

 
  • NOT NULL - Fiecare rând (row) trebuie să conțină o valoare pentru acea coloană (column), valorile nule nu sunt permise
  • Valoarea DEFAULT - Setați o valoare implicită care este adăugată atunci când nu este trecută altă valoare
  • UNSIGNED - Folosit pentru tipuri de numere, limitează datele stocate la numere pozitive și zero
  • AUTO INCREMENT - MySQL crește automat valoarea câmpului de fiecare dată când se adaugă o nouă înregistrare
  • PRIMARY KEY - Folosit pentru identificarea unică a rândurilor dintr-un tabel. Coloana cu setarea PRIMARY KEY este adesea un număr de identificare (ID number) și este adesea folosită cu AUTO_INCREMENT

Fiecare tabel trebuie să aibă o coloană de chei primare (primary key column) (în acest caz: coloana „id). Valoarea sa trebuie să fie unică pentru fiecare înregistrare din tabel.

PHP MySQL Creare Tabel. Exemplu (MySQLi Procedural).

PHP MySQL Create Table

Exemplu (MySQLi Procedural)

 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Verificați conexiunea
if (!$conn) {
    die("Conexiunea a eșuat: " . mysqli_connect_error());
}

//  sql pentru a crea tabelul
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";

if (mysqli_query($conn, $sql)) {
    echo "Tabelul MyGuests creat cu succes";
} else {
    echo "Eroare la crearea tabelului: " . mysqli_error($conn);
}

mysqli_close($conn);
?>

PHP MySQL Creare Tabel. Exemplu (MySQLi Orientat pe obiect).

PHP MySQL Create Table

Următoarele exemple arată cum se creează tabelul în PHP:

Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}

// sql pentru a crea tabelul
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";

if ($conn->query($sql) === TRUE) {
    echo "Tabelul MyGuests creat cu succes";
} else {
    echo "Eroare la crearea tabelului: " . $conn->error;
}

$conn->close();
?>

PHP MySQL Creare Tabel. ​​​​​​​Exemplu (PDO).

PHP MySQL Create Table

Exemplu (PDO)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // sql pentru a crea tabelul
    $sql = "CREATE TABLE MyGuests (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    firstname VARCHAR(30) NOT NULL,
    lastname VARCHAR(30) NOT NULL,
    email VARCHAR(50),
    reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    )";

    // utilizați exec() deoarece nu se returnează niciun rezultat
    $conn->exec($sql);
    echo "Tabelul MyGuests creat cu succes";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

PHP MySQL Inserare date. Inserare date în MySQL folosind MySQLi și PDO. Reguli de sintaxă de urmat. Instrucțiunea INSERT INTO.

PHP MySQL Inserare date. (PHP MySQL Insert Data)

Inserați date în MySQL folosind MySQLi și PDO

După crearea unei baze de date și a unui tabel, putem începe să adăugăm date în ele.

Iată câteva reguli de sintaxă de urmat:
 
  • Interogarea SQL (SQL query) trebuie indicată în PHP
  • Valorile șirului (string values) din interogarea SQL (SQL query) trebuie menționate
  • Valorile numerice (numeric values) nu trebuie citate
  • Nu trebuie menționat cuvântul NULL

Instrucțiunea INSERT INTO este utilizată pentru a adăuga noi înregistrări la un tabel MySQL:
 
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

În capitolul precedent, am creat un tabel gol, numit „MyGuests”, cu cinci coloane: "id", "firstname", "lastname", "email" și "reg_date".

Acum, să umplem tabelul cu date.

Notă: Dacă o coloană este AUTO_INCREMENT (cum ar fi coloana „id”) sau TIMESTAMP cu actualizarea implicită a current_timesamp (precum coloanareg_date”), nu este necesar să fie specificată în interogarea SQL (SQL query); MySQL va adăuga automat valoarea.

PHP MySQL Inserare date. Exemplu (MySQLi Procedural).

PHP MySQL Inserare date (PHP MySQL Insert Data)

Exemplu (MySQLi Procedural)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Verificați conexiunea
if (!$conn) {
    die("Conectarea a eșuat: " . mysqli_connect_error());
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Ion', 'Popescu', '[email protected]')";

if (mysqli_query($conn, $sql)) {
    echo "Noua înregistrare creată cu succes";
} else {
    echo "Eroare: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);
?>

PHP MySQL Inserare date. Exemplu (MySQLi Orientat pe obiect).

PHP MySQL Inserare date (PHP MySQL Insert Data)

Următoarele exemple adaugă o nouă înregistrare la tabelulMyGuests”:

Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Ion', 'Popescu', '[email protected]')";

if ($conn->query($sql) === TRUE) {
    echo "Noua înregistrare creată cu succes";
} else {
    echo "Eroare: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

PHP MySQL Inserare date. Exemplu (PDO).

PHP MySQL Inserare date (PHP MySQL Insert Data)

Exemplu (PDO)

 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    //  setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Ion', 'Popescu', '[email protected]')";
    // utilizați exec() deoarece nu se returnează niciun rezultat
    $conn->exec($sql);
    echo "Noua înregistrare creată cu succes";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

PHP MySQL Obțineți ultimul ID introdus. Exemplu (MySQLi Procedural). Exemplu (PDO).

PHP MySQL Obțineți ultimul ID introdus. 

Exemplu (MySQLi Procedural)

 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Verificați conexiunea
if (!$conn) {
    die("Conexiunea a eșuat: " . mysqli_connect_error());
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Ion', 'Popescu', '[email protected]')";

if (mysqli_query($conn, $sql)) {
    $last_id = mysqli_insert_id($conn);
    echo "Noua înregistrare creată cu succes. Ultimul ID inserat este: " . $last_id;
} else {
    echo "Eroare: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);
?>

Exemplu (PDO)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('John', 'Doe', '[email protected]')";
    // utilizați exec() deoarece nu se returnează niciun rezultat
    $conn->exec($sql);
    $last_id = $conn->lastInsertId();
    echo "Noua înregistrare creată cu succes. Ultimul ID inserat este: " . $last_id;
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

PHP MySQL Obțineți ultimul ID introdus. Exemplu (MySQLi Orientat pe obiect).

PHP MySQL Obțineți ultimul ID introdus

Obțineți ID-ul ultimei înregistrări introduse

Dacă efectuăm un INSERT sau UPDATE pe o tabelă cu câmpul AUTO_INCREMENT, putem obține imediat ID-ul ultimei înregistrări introduse/actualizate (inserted/updated).

În tabelul „MyGuests”, coloana „id” este un câmp AUTO_INCREMENT:
 
CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)

Următoarele exemple sunt egale cu exemplele din pagina anterioară (PHP Insert Data In MySQL), cu excepția faptului că am adăugat o singură linie de cod pentru a prelua ID-ul ultimei înregistrări introduse. De asemenea, afisam cu echo ultimul ID introdus:

Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Ion', 'Popescu', '[email protected]')";

if ($conn->query($sql) === TRUE) {
    $last_id = $conn->insert_id;
    echo "Noua înregistrare creată cu succes. Ultimul ID inserat este: " . $last_id;
} else {
    echo "Eroare: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

PHP MySQL Introduceți mai multe înregistrări. Inserați mai multe înregistrări în MySQL folosind MySQLi și PDO. Instrucțiuni SQL. Funcția mysqli_multi_query(). Exemplu (MySQLi Orientat pe obiect).

PHP MySQL Introduceți mai multe înregistrări

Inserați mai multe înregistrări în MySQL folosind MySQLi și PDO

Mai multe instrucțiuni SQL trebuie executate cu funcția mysqli_multi_query().

Următoarele exemple adaugă trei înregistrări noi în tabelulMyGuests”:

Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Ion', 'Popescu', '[email protected]');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Maria', 'Gheorghe', '[email protected]');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Iulia', 'Filipescu', '[email protected]')";

if ($conn->multi_query($sql) === TRUE) {
    echo "Înregistrări noi create cu succes";
} else {
    echo "Eroare: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

PHP MySQL Introduceți mai multe înregistrări. Exemplu (MySQLi Procedural)

PHP MySQL Introduceți mai multe înregistrări.

Exemplu (MySQLi Procedural)

 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Verificați conexiunea
if (!$conn) {
    die("Conexiunea a eșuat: " . mysqli_connect_error());
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Ion', 'Popescu', '[email protected]');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Maria', 'Gheorghe', '[email protected]');";
$sql .= "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Iulia', 'Filipescu', '[email protected]')";

if (mysqli_multi_query($conn, $sql)) {
    echo "Înregistrări noi create cu succes";
} else {
    echo "Eroare: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);
?>

PHP MySQL Introduceți mai multe înregistrări. Exemplu (PDO).

PHP MySQL Introduceți mai multe înregistrări

Modul PDO este puțin diferit:

Exemplu (PDO)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // începeți tranzacția
    $conn->beginTransaction();
    // declarațiile noastre SQL
    $conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Ion', 'Popescu', '[email protected]')");
    $conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Maria', 'Gheorghe', '[email protected]')");
    $conn->exec("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Iulia', 'Filipescu', '[email protected]')");

    // commit the transaction
    $conn->commit();
    echo "Înregistrări noi create cu succes";
    }
catch(PDOException $e)
    {
    // dați înapoi tranzacția dacă ceva a eșuat
    $conn->rollback();
    echo "Eroare: " . $e->getMessage();
    }

$conn = null;
?>

Declarații pregătite în MySQLi. Linii de cod pentru a explica exemplul precedent. Funcția bind_param().

Declarații pregătite în MySQLi (Prepared Statements in MySQLi)

Exemplu (MySQLi cu declarații pregătite/MySQLi with Prepared Statements)
 
Linii de cod pentru a explica exemplul precedent:
 
"INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)"

În SQL-ul nostru, introducem un semn de întrebare (?) unde vrem să înlocuim o valoare întreagă, string, dublă sau blob (integer, string, double or blob).

Apoi, aruncați o privire la funcția bind_param():
 
$stmt->bind_param("sss", $firstname, $lastname, $email);

Această funcție leagă parametrii la interogarea SQL (SQL query) și îi spune bazei de date care sunt parametrii. Argumentul sss” listează tipurile de date (types of data) care sunt parametri. Caracterul s spune mysql-ului parametrul este un șir (string).

Argumentul poate fi unul din următoarele patru tipuri:
 
  • i - număr întreg (integer)
  • d - dublu (double)
  • s - șir (string)
  • b - BLOB

Pentru fiecare parametru trebuie să avem una dintre acestea .

Spunând mysql-ului la ce tip de date (type of data) trebuie să se aștepte, reducem la minimum riscul de injecții SQL (SQL injections.).

Notă: Dacă dorim să introducem date din surse externe (cum ar fi intrarea utilizatorului (user input)), este foarte important ca datele să fie igienizate ( sanitized) și validate.

PHP MySQL Declarații pregătite. Declarații pregătite în MySQLi. Exemplu (MySQLi cu declarații pregătite).

Declarații pregătite în MySQLi (Prepared Statements in MySQLi)

Următorul exemplu utilizează instrucțiuni pregătite și parametri legați (prepared statements and bound parameters) în MySQLi:

Exemplu (MySQLi cu declarații pregătite/MySQLi with Prepared Statements)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);

// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}

// pregătiți și legați
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

// setați parametrii și executați
$firstname = "Ion";
$lastname = "Popescu";
$email = "[email protected]";
$stmt->execute();

$firstname = "Maria";
$lastname = "Gheorghe";
$email = "[email protected]";
$stmt->execute();

$firstname = "Iulia";
$lastname = "Filipescu";
$email = "[email protected]";
$stmt->execute();

echo "Înregistrări noi create cu succes";

$stmt->close();
$conn->close();
?>

PHP MySQL Declarații pregătite. Declarații pregătite și parametrii legați.

PHP MySQL Declarații pregătite

Declarațiile pregătite (prepared statements) sunt foarte utile împotriva injecțiilor SQL (SQL injections).

Declarații pregătite și parametri legați (Prepared Statements and Bound Parameters)

O declarație pregătită (prepared statements) este o caracteristică utilizată pentru a executa aceleași (sau similare) instrucțiuni SQL cu o eficiență ridicată.

Declarațiile pregătite (prepared statements) funcționează astfel:
 
  1. Pregătire: Un șablon de instrucțiuni SQL (SQL statement template) este creat și trimis în baza de date. Anumite valori sunt lăsate nespecificate, numite parametri (etichetat (labeled) "?"). Exemplu: INSERT INTO MyGuests VALUES(?, ?, ?).
  2. Baza de date analizează, compilează și efectuează optimizarea interogării (query) pe șablonul de instrucțiuni SQL (SQL statement template) și stochează rezultatul fără a-l executa.
  3. Executare: ulterior, aplicația leagă valorile la parametrii, iar baza de date execută instrucțiunea. Aplicația poate executa instrucțiunea ori de câte ori dorește cu valori diferite.

Față de executarea directă a instrucțiunilor SQL, instrucțiunile pregătite (prepared statements) au trei avantaje principale:
 
  • Instrucțiunile pregătite (prepared statements) reduc timpul de analiză (parsing time), deoarece pregătirea pe interogare (query) se face o singură dată (deși instrucțiunea este executată de mai multe ori).
  • Parametrii legați (bound parameters) minimizează lățimea de bandă (bandwidth) către server, deoarece trebuie să trimiteți de fiecare dată doar parametrii și nu întreaga interogare (query).
  • Instrucțiunile pregătite (prepared statements) sunt foarte utile împotriva injecțiilor SQL (SQL injections), deoarece valorile parametrilor, care sunt transmise ulterior folosind un protocol diferit, nu trebuie eliberate corect (correctly escaped). Dacă șablonul de instrucțiune originală (original statement template) nu este derivat de la intrarea externă (external input), nu poate apărea injecția SQL (SQL injection).

Declarații pregătite în MySQLi. Declarații pregătite în PDO. Exemplu (PDO cu declarații pregătite)..

Declarații pregătite în PDO (Prepared Statements in PDO)

Următorul exemplu utilizează declarații pregătite și parametri legați (prepared statements and bound parameters) în PDO:

Exemplu (PDO cu declarații pregătite)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // pregătiți parametrii sql și bind
    $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES (:firstname, :lastname, :email)");
    $stmt->bindParam(':firstname', $firstname);
    $stmt->bindParam(':lastname', $lastname);
    $stmt->bindParam(':email', $email);

    // introduceți un rând
    $firstname = "Ion";
    $lastname = "Popescu";
    $email = "[email protected]";
    $stmt->execute();

    // introduceți un alt rând
    $firstname = "Maria";
    $lastname = "Gheorghe";
    $email = "[email protected]";
    $stmt->execute();

    // introduceți un alt rând
    $firstname = "Iulia";
    $lastname = "Filipescu";
    $email = "[email protected]";
    $stmt->execute();

    echo "Înregistrări noi create cu succes";
    }
catch(PDOException $e)
    {
    echo "Eroare: " . $e->getMessage();
    }
$conn = null;
?>
 

PHP MySQL Select Data. Selectați datele cu PDO (+ declarații pregătite/prepared statements). Exemplu (PDO).

PHP MySQL Select Data

Selectați datele cu PDO (+ declarații pregătite/prepared statements)

Următorul exemplu folosește instrucțiuni pregătite (prepared statements).

Selectează coloanele id, prenume și nume (id, firstname, lastname) din tabelul MyGuests și îl afișează într-un tabel HTML:

Exemplu (PDO)
 
<?php
echo "<table style='border: solid 1px black;'>";
echo "<tr><th>Id</th><th>Prenume</th><th>Nume</th></tr>";

class TableRows extends RecursiveIteratorIterator {
    function __construct($it) {
        parent::__construct($it, self::LEAVES_ONLY);
    }

    function current() {
        return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
    }

    function beginChildren() {
        echo "<tr>";
    }

    function endChildren() {
        echo "</tr>" . "\n";
    }
}

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests");
    $stmt->execute();

    // setați tabloul rezultat la asociativ (set the resulting array to associative)
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
    foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
        echo $v;
    }
}
catch(PDOException $e) {
    echo "Eroare: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>

PHP MySQL Select Data. Selectați datele dintr-o bază de date MySQL. Instrucțiunea SELECT. Selectați date cu MySQLi. Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented). Funcția num_rows(). Funcția fetch_assoc().

PHP MySQL Select Data

Selectați datele dintr-o bază de date MySQL

Instrucțiunea SELECT este utilizată pentru a selecta datele dintr-una sau mai multe tabele:
 
SELECT column_name(s) FROM table_name

sau putem folosi caracterul * pentru a selecta TOATE coloanele dintr-un tabel:
 
SELECT * FROM table_name

Selectați date cu MySQLi

Următorul exemplu selectează coloanele id, prenume și nume (id, firstname, lastname) din tabelul MyGuests și îl afișează pe pagină:

Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // date de ieșire ale fiecărui rând (output data of each row)
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

Linii de cod pentru a explica exemplul de mai sus:

Mai întâi, am configurat o interogare SQL (SQL query) care selectează coloanele id, nume și prenume (id, firstname, lastname) din tabelul MyGuests. Următoarea linie de cod rulează interogarea (query) și pune datele rezultate într-o variabilă numită $result.

Apoi, funcția num_rows() verifică dacă au fost returnate mai mult de zero rânduri.

Dacă sunt returnate mai mult de zero rânduri, funcția fetch_assoc() plasează toate rezultatele într-un tablou asociativ (associative array) pe care îl putem bucla (loop). Bucla (loop) while() buclează setul de rezultate și emite datele din coloanele id, nume și prenume (id, firstname, lastname).

PHP MySQL Select Data. Exemplu (MySQLi Procedural).

PHP MySQL Select Data

Următorul exemplu arată același lucru ca și exemplul precedent, în modul procedural MySQLi:

Exemplu (MySQLi Procedural)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Verificați conexiunea
if (!$conn) {
    die("Conexiunea a eșuat: " . mysqli_connect_error());
}

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // date de ieșire ale fiecărui rând
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Nume: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}

mysqli_close($conn);
?>

PHP MySQL Select Data. Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented).

PHP MySQL Select Data

Puteți pune rezultatul într-un tabel HTML:

Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    echo "<table><tr><th>ID</th><th>Nume</th></tr>";
    // date de ieșire ale fiecărui rând
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
    }
    echo "</table>";
} else {
    echo "0 results";
}
$conn->close();
?>

PHP MySQL Clauza ORDER BY. Exemplu (MySQLi Procedural). Exemplu (MySQLi Orientat pe obiect)​​​​​​​.

PHP MySQL Utilizați clauza ORDER BY

Puteți pune rezultatul într-un tabel HTML:

Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}

$sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    echo "<table><tr><th>ID</th><th>Nume</th></tr>";
    // date de ieșire ale fiecărui rând
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
    }
    echo "</table>";
} else {
    echo "0 results";
}
$conn->close();
?>

PHP MySQL Clauza ORDER BY. Select și date de comandă dintr-o bază de date MySQL. Select și date de comandă cu MySQLi. Exemplu (MySQLi Orientat pe obiect).

PHP MySQL Utilizați clauza ORDER BY

Select și date de comandă dintr-o bază de date MySQL (Select and Order Data From a MySQL Database)

Clauza ORDER BY este folosită pentru a sorta setul de rezultate în ordine crescătoare sau descrescătoare.

Clauza ORDER BY sortează înregistrările în ordine crescătoare în mod implicit. Pentru a sorta înregistrările în ordine descrescătoare, utilizați cuvântul cheie DESC.
 
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC 

Select și date de comandă cu MySQLi (Select and Order Data With MySQLi)

Următorul exemplu selectează coloanele id, prenume și nume (id, firstname, lastname) din tabelul MyGuests. Înregistrările vor fi ordonate după coloana prenumelui:

Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}

$sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // date de ieșire ale fiecărui rând
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Nume: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

Linii de cod pentru a explica exemplul de mai sus:

În primul rând, am configurat interogarea SQL (SQL query) care selectează coloanele id, prenume și nume (id, firstname, lastname) din tabelul MyGuests. Înregistrările vor fi comandate de coloana cu numele de familie. Următoarea linie de cod rulează interogarea (query) și pune datele rezultate într-o variabilă numită $result.

Apoi, funcția num_rows() verifică dacă au fost returnate mai mult de zero rânduri.

Dacă sunt returnate mai mult de zero rânduri, funcția fetch_assoc() plasează toate rezultatele într-un tablou asociativ (associative array) pe care îl putem bucla (loop). Bucla (loop) while() buclează setul de rezultate și emite datele din coloanele id, prenume și nume (id, firstname, lastname).

PHP MySQL Clauza ORDER BY. Exemplu (MySQLi Procedural).

PHP MySQL Utilizați clauza ORDER BY

Următorul exemplu arată același lucru ca și exemplul precedent, în modul procedural MySQLi:

Exemplu (MySQLi Procedural)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Verificați conexiunea
if (!$conn) {
    die("Conexiunea a eșuat: " . mysqli_connect_error());
}

$sql = "SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // date de ieșire ale fiecărui rând
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Nume: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}

mysqli_close($conn);
?>

PHP MySQL Clauza ORDER BY. Selectați date cu PDO (+ declarații pregătite). Exemplu (PDO).

PHP MySQL Utilizați clauza ORDER BY

Selectați date cu PDO (+ declarații pregătite/prepared statements)

Următorul exemplu folosește instrucțiuni pregătite (prepared statements).

Aici selectăm coloanele id, prenume și nume (id, firstname, lastname) din tabelul MyGuests. Înregistrările vor fi ordonate după coloana cu numele de familie și vor fi afișate într-un tabel HTML:

Exemplu (PDO)
 
<?php
echo "<table style='border: solid 1px black;'>";
echo "<tr><th>Id</th><th>Prenume</th><th>Nume</th></tr>";

class TableRows extends RecursiveIteratorIterator {
    function __construct($it) {
        parent::__construct($it, self::LEAVES_ONLY);
    }

    function current() {
        return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
    }

    function beginChildren() {
        echo "<tr>";
    }

    function endChildren() {
        echo "</tr>" . "\n";
    }
}

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests ORDER BY lastname");
    $stmt->execute();

    // setați tabloul rezultat la asociativ (set the resulting array to associative)
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
    foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
        echo $v;
    }
}
catch(PDOException $e) {
    echo "Eroare: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>

PHP MySQL Ștergere date. Exemplu (MySQLi Procedural)

PHP MySQL Ștergere date

Exemplu (MySQLi Procedural)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Verificați conexiunea
if (!$conn) {
    die("Conexiunea a eșuat: " . mysqli_connect_error());
}

// sql pentru a șterge o înregistrare
$sql = "DELETE FROM MyGuests WHERE id=3";

if (mysqli_query($conn, $sql)) {
    echo "Înregistrare ștersă cu succes";
} else {
    echo "Eroare la ștergerea înregistrării: " . mysqli_error($conn);
}

mysqli_close($conn);
?>

PHP MySQL Ștergere date. Ștergeți datele dintr-un tabel MySQL folosind MySQLi și PDO. Instrucțiunea DELETE. Exemplu (MySQLi Orientat pe obiect).

PHP MySQL Ștergere date

Ștergeți datele dintr-un tabel MySQL folosind MySQLi și PDO

Instrucțiunea DELETE este utilizată pentru a șterge înregistrările dintr-un tabel:
 
DELETE FROM table_name
WHERE some_column = some_value

Observați clauza WHERE în sintaxa DELETE: clauza WHERE specifică ce înregistrare sau înregistrări trebuie șterse. Dacă omiteți clauza WHERE, toate înregistrările vor fi șterse!

Următoarele exemple șterg înregistrarea cu id=3 din tabelul „MyGuests:

Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}

// sql pentru a șterge o înregistrare
$sql = "DELETE FROM MyGuests WHERE id=3";

if ($conn->query($sql) === TRUE) {
    echo "Înregistrare ștersă cu succes";
} else {
    echo "Eroare la ștergerea înregistrării: " . $conn->error;
}

$conn->close();
?>

PHP MySQL Ștergere date. Exemplu (PDO).

PHP MySQL Ștergere date

Exemplu (PDO)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // sql pentru a șterge o înregistrare
    $sql = "DELETE FROM MyGuests WHERE id=3";

    // utilizați exec() deoarece nu se returnează niciun rezultat
    $conn->exec($sql);
    echo "Înregistrare ștersă cu succes";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

PHP MySQL Actualizare date. ​​​​​​​Exemplu (MySQLi Procedural).

PHP MySQL Actualizare date

Exemplu (MySQLi Procedural)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Verificați conexiunea
if (!$conn) {
    die("Conexiunea a eșuat: " . mysqli_connect_error());
}

$sql = "UPDATE MyGuests SET lastname='Popescu' WHERE id=2";

if (mysqli_query($conn, $sql)) {
    echo "Înregistrare actualizată cu succes";
} else {
    echo "Eroare la actualizarea înregistrării: " . mysqli_error($conn);
}

mysqli_close($conn);
?>

PHP MySQL Actualizare date. Exemplu (PDO).

PHP MySQL Actualizare date

Exemplu (PDO)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "UPDATE MyGuests SET lastname='Popescu' WHERE id=2";

    // Pregătirea declarației (statement)
    $stmt = $conn->prepare($sql);

    // executați interogarea (query)
    $stmt->execute();

    // echo un mesaj pentru a spune că UPDATE a reușit
    echo $stmt->rowCount() . " records UPDATED successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

PHP MySQL Actualizare date. Actualizarea datelor într-un tabel MySQL folosind MySQLi și PDO. Instrucțiunea UPDATE. Exemplu (MySQLi Orientat pe obiect).

PHP MySQL Actualizare date

Actualizarea datelor într-un tabel MySQL folosind MySQLi și PDO

Instrucțiunea UPDATE este utilizată pentru a actualiza înregistrările existente într-un tabel:
 
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value 

Observați clauza WHERE în sintaxa UPDATE: clauza WHERE specifică ce înregistrare sau înregistrări ar trebui actualizate. Dacă omiteți clauza WHERE, toate înregistrările vor fi actualizate!

Următoarele exemple actualizează înregistrarea cu id = 2 în tabelulMyGuests”:

Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}

$sql = "UPDATE MyGuests SET lastname='Popescu' WHERE id=2";

if ($conn->query($sql) === TRUE) {
    echo "Înregistrare actualizată cu succes";
} else {
    echo "Eroare la actualizarea înregistrării: " . $conn->error;
}

$conn->close();
?>

PHP MySQL Clauza WHERE. Selectați și filtrați datele dintr-o bază de date MySQL. Selectați și filtrați datele cu MySQLi. Exemplu (MySQLi Orientat pe obiect). Funcția num_rows(). Funcția fetch_assoc(). Loop while().

PHP MySQL Utilizați clauza WHERE

Selectați și filtrați datele dintr-o bază de date MySQL

Clauza WHERE este folosită pentru a filtra înregistrările.

Clauza WHERE este utilizată pentru a extrage doar acele înregistrări care îndeplinesc o condiție specificată.
 
SELECT column_name(s) FROM table_name WHERE column_name operator value 

Selectați și filtrați datele cu MySQLi

Următorul exemplu selectează coloanele id, prenumele și numele (id, firstname, lastname) din tabelul MyGuests unde numele de familie (lastname) este "Popescu" și îl afișează pe pagina:

Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}

$sql = "SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Popescu'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // date de ieșire ale fiecărui rând
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Nume: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

Linii de cod pentru a explica exemplul de mai sus:

Mai întâi, am configurat interogarea SQL (SQL query) care selectează coloanele id, prenumele și numele (id, firstname, lastname) din tabelul MyGuests unde numele de familie (lastname) este „Popescu”. Următoarea linie de cod rulează interogarea (query) și pune datele rezultate într-o variabilă numită $result.

Apoi, funcția num_rows() verifică dacă au fost returnate mai mult de zero rânduri.

Dacă sunt returnate mai mult de zero rânduri, funcția fetch_assoc() plasează toate rezultatele într-un tablou asociativ (associative array) pe care îl putem bucla (loop). Bucla (loop) while() buclează setul de rezultate și emite datele din coloanele id, nume și prenume (id, firstname, lastname).

PHP MySQL Clauza WHERE. Exemplu (MySQLi Procedural).

PHP MySQL Utilizați clauza WHERE

Următorul exemplu arată același lucru ca și exemplul dprecedent, în modul procedural MySQLi:

Exemplu (MySQLi Procedural)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Verificați conexiunea
if (!$conn) {
    die("Conexiunea a eșuat: " . mysqli_connect_error());
}

$sql = "SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Popescu'";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // date de ieșire ale fiecărui rând
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Nume: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}

mysqli_close($conn);
?>

PHP MySQL Clauza WHERE. Exemplu (MySQLi Orientat pe obiect).

PHP MySQL Utilizați clauza WHERE

Puteți pune rezultatul într-un tabel HTML:

Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
 
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}

$sql = "SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Popescu'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    echo "<table><tr><th>ID</th><th>Nume</th></tr>";
    // date de ieșire ale fiecărui rând
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
    }
    echo "</table>";
} else {
    echo "0 results";
}
$conn->close();
?>

PHP MySQL Clauza WHERE. Selectați date cu PDO (+declarații pregătite). Exemplu (PDO).

PHP MySQL Utilizați clauza WHERE

Selectați date cu PDO (+ declarații pregătite/prepared statements)


Următorul exemplu folosește instrucțiuni pregătite (prepared statements).

Selectează coloanele id, prenumele și numele 
(id, firstname, lastname) din tabelul MyGuests unde numele de familie este "Popescu" și îl afișează într-un tabel HTML:

Exemplu (PDO)

 
<?php
echo "<table style='border: solid 1px black;'>";
echo "<tr><th>Id</th><th>Prenume</th><th>Nume</th></tr>";

class TableRows extends RecursiveIteratorIterator {
    function __construct($it) {
        parent::__construct($it, self::LEAVES_ONLY);
    }

    function current() {
        return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
    }

    function beginChildren() {
        echo "<tr>";
    }

    function endChildren() {
        echo "</tr>" . "\n";
    }
}

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Popescu'");
    $stmt->execute();

    // setați tabloul rezultat la asociativ (set the resulting array to associative)
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
    foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
        echo $v;
    }
}
catch(PDOException $e) {
    echo "Eroare: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>

PHP MySQL Limitarea selecțiilor de date. Limitați selecțiile de date dintr-o bază de date MySQL. Clauza LIMIT.

PHP MySQL Limitarea selecțiilor de date

Limitați selecțiile de date dintr-o bază de date MySQL

MySQL oferă o clauză LIMIT care este utilizată pentru a specifica numărul de înregistrări de returnat.

Clauza LIMIT facilitează codarea rezultatelor pe mai multe pagini sau paginarea cu SQL și este foarte utilă pe tabelele mari.

Returnarea unui număr mare de înregistrări poate avea impact asupra performanței.

Presupunem că dorim să selectăm toate înregistrările de la 1 la 30 (inclusiv) dintr-un tabel numit „Comenzi” (Orders). Interogarea SQL (SQL query) ar arăta astfel:
 
$sql = "SELECT * FROM Orders LIMIT 30";

Când se execută interogarea SQL (SQL query) de mai sus, aceasta va returna primele 30 de înregistrări.

Ce se întâmplă dacă vrem să selectăm înregistrările 16 - 25 (inclusiv)?

Mysql oferă, de asemenea, o modalitate de a face acest lucru: folosind OFFSET.

Interogarea SQL (SQL query) de mai jos spune „returnează doar 10 înregistrări, începeți la înregistrarea 16 (OFFSET 15)”:
 
$sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";

Puteți utiliza, de asemenea, o sintaxă mai scurtă pentru a obține același rezultat:
 
$sql = "SELECT * FROM Orders LIMIT 15, 10";

Rețineți că numerele sunt inversate atunci când utilizați o virgulă.

PHP XML Analizatoare. Ce este XML? Ce este un parser XML? Analizatoare XML. Analizatoare pe bază de arbori . Exemplu de analizatori pe bază de arbori. Analizatoare bazate pe eveniment. Exemplu de analizatoare bazate pe evenimente.

PHP XML Parsers

Ce este XML?

Limbajul XML este o modalitate de structurare a datelor pentru partajarea pe site-uri web.

Mai multe tehnologii web precum RSS Feed și Podcast-uri sunt scrise în XML

XML este ușor de creat. Seamănă foarte mult cu HTML, cu excepția faptului că vă alcătuiți propriile etichete.

Ce este un parser XML?

Pentru a citi și actualiza, crea și manipula (read and update, create and manipulate) un document XML, veți avea nevoie de un analizator (parser) XML.

În PHP există două tipuri majore de analizatoare (parsers) XML:
 
  • Tree-Based Parsers
  • Event-Based Parsers

Tree-Based Parsers

Analizatorii pe baza de arbori (Tree-Based Parsers) dețin întregul document în memorie și transformă documentul XML într-o structură Tree. Analizează întregul document și oferă acces la elementele Tree (DOM).

Acest tip de analizor (type of parser) este o opțiune mai bună pentru documentele XML mai mici, dar nu pentru documentele XML mari, deoarece provoacă probleme majore de performanță.

Exemplu de analizatori pe baza de arbori (tree-based parsers):
 
  • SimpleXML
  • DOM

Event-Based Parsers

Analizatorii pe bază de evenimente (Event-Based Parsers) nu dețin întregul document în memorie, ci citesc într-un singur nod simultan și vă permit să interacționați în timp real. Odată ce treceți pe următorul nod, cel vechi este aruncat.

Acest tip de analizator (type of parser) este potrivit pentru documentele XML mari. Acesta analizează mai repede și consumă mai puțină memorie.

Exemplu de analizatoare bazate pe evenimente (Event-Based Parsers):
 
  • XMLReader
  • XML Expat Parser

Analizator PHP SimpleXML. Analizatorul SimpleXML. PHP SimpleXML - Citiți din string. Funcția PHP simplexml_load_string().

Analizator PHP SimpleXML (PHP SimpleXML Parser)

SimpleXML este o extensie PHP care ne permite să manipulăm cu ușurință și să obținem date XML.

Parserul SimpleXML

SimpleXML este un analizator bazat pe arbori (tree-based parser).

SimpleXML oferă o modalitate ușoară de a obține numele, atributele și conținutul textului unui element (name, attributes and textual content), dacă știți structura sau aspectul (layout) documentului XML.

SimpleXML transformă un document XML într-o structură de date (data structure) pe care o puteți repeta printr-o colecție de tablouri (collection of arrays) și obiecte.

În comparație cu DOM sau analizatorul (parser) Expat, SimpleXML ia mai puține linii de cod pentru a citi datele text (text data) dintr-un element.

Instalare

De la PHP 5, funcțiile SimpleXML fac parte din nucleul PHP. Nu este necesară instalarea pentru a utiliza aceste funcții.

PHP SimpleXML - Citiți din șir (string)

Funcția PHP simplexml_load_string() este utilizată pentru a citi datele XML dintr-un șir (string).

Presupunem că avem o variabilă care conține date XML, astfel:
 
$myXMLData =
"<?xml version='1.0' encoding='UTF-8'?>
<note>
<to>Popescu</to>
<from>Ioana</from>
<heading>Reminder</heading>
<body>Nu uitați de mine în acest weekend!</body>
</note>";

Analizator PHP SimpleXML. Funcția simplexml_load_string(). Utilizați funcția simplexml_load_string() pentru a citi datele XML dintr-un string. Utilizați funcționalitatea libxml pentru a prelua toate erorile XML la încărcarea documentului.

Analizator PHP SimpleXML (PHP SimpleXML Parser)

Exemplul de mai jos arată cum să utilizați funcția simplexml_load_string() pentru a citi datele XML dintr-un șir (string):

Exemplu
 
<?php
$myXMLData =
"<?xml version='1.0' encoding='UTF-8'?>
<note>
<to>Popescu</to>
<from>Ioana</from>
<heading>Reminder</heading>
<body>Nu uitați de mine în acest weekend!</body>
</note>";

$xml=simplexml_load_string($myXMLData) or die("Eroare: Nu se poate crea obiectul");
print_r($xml);
?>

Rezultatul codului de mai sus va fi:
 
SimpleXMLElement Object ( [to] => Popescu [from] => Ioana [heading] => Reminder [body] => Nu uitați de mine în acest weekend! )

Sfat de gestionare a erorilor: Utilizați funcționalitatea libxml pentru a prelua toate erorile XML la încărcarea documentului și apoi repetați erorile.

Următorul exemplu încearcă să încarce un șir (string) XML rupt:

Exemplu
 
<?php
libxml_use_internal_errors(true);
$myXMLData =
"<?xml version='1.0' encoding='UTF-8'?>
<document>
<user>Ion Popescu</wronguser>
<email>[email protected]</wrongemail>
</document>";

$xml = simplexml_load_string($myXMLData);
if ($xml === false) {
    echo "Încărcarea XML a eșuat: ";
    foreach(libxml_get_errors() as $error) {
        echo "<br>", $error->message;
    }
} else {
    print_r($xml);
}
?>

Rezultatul codului de mai sus va fi:
 
Încărcarea XML a eșuat:
Nepotrivirea etichetelor de deschidere și incheiere (opening și ending) : linia de utilizator 3 și utilizator greșit (user line 3 and wronguser)
Nepotrivirea etichetelor de deschidere și incheiere (opening și ending): linia de e-mail 4 și e-mail greșit (email line 4 and wrongemail)

Analizator PHP SimpleXML. PHP SimpleXML - Citiți din fișier. Funcția PHP simplexml_load_file(). Utilizați funcția simplexml_load_file() pentru a citi datele XML dintr-un fișier.

PHP SimpleXML - Citiți din fișier (Read From File)

Funcția PHP simplexml_load_file() este utilizată pentru a citi datele XML dintr-un fișier.

Presupunem că avem un fișier XML numit "note.xml", care arată astfel:
 
<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Popescu</to>
  <from>Ioana</from>
  <heading>Reminder</heading>
  <body>Nu uitați de mine în acest weekend!</body>
</note>

Exemplul de mai jos arată cum să utilizați funcția simplexml_load_file() pentru a citi datele XML dintr-un fișier:

Exemplu
 
<?php
$xml=simplexml_load_file("note.xml") or die("Eroare: Nu se poate crea obiectul");
print_r($xml);
?>

Rezultatul codului de mai sus va fi:
 
SimpleXMLElement Object ( [to] => Popescu [from] => Ioana [heading] => Reminder [body] => Nu uitați de mine în acest weekend! )

Sfat: Capitolul următor arată cum să obțineți/recuperați valorile nodului (get/retrieve node values) dintr-un fișier XML cu SimpleXML!

PHP SimpleXML - Obțineți valorile nod/atribut. PHP SimpleXML - Obțineți valorile nodului.

PHP SimpleXML - Obțineți valorile nod/atribut (Get Node/Attribute Values)

SimpleXML este o extensie PHP care ne permite să manipulăm cu ușurință și să obținem date XML.

PHP SimpleXML - Obțineți valorile nodului (Get Node Values)

Obțineți valorile nodului din fișierulnote.xml”:

Exemplu
 
<?php
$xml=simplexml_load_file("note.xml") or die("Eroare: Nu se poate crea obiectul");
echo $xml->to . "<br>";
echo $xml->from . "<br>";
echo $xml->heading . "<br>";
echo $xml->body;
?>

Rezultatul codului de mai sus va fi:
 
Ioana
Popescu
Reminder
Nu uita de mine în acest weekend!

PHP SimpleXML - Obțineți valorile nod/atribut. Exemplu de alt fișier XML.

PHP SimpleXML - Obțineți valorile nod/atribut (Get Node/Attribute Values)

Exemplu de alt fișier XML

Presupunem că avem un fișier XML numit "books.xml", care arată astfel:
 
<?xml version="1.0" encoding="utf-8"?>
<bookstore>
  <book category="COOKING">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="CHILDREN">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book category="WEB">
    <title lang="en-us">XQuery Kick Start</title>
    <author>James McGovern</author>
    <year>2003</year>
    <price>49.99</price>
  </book>
  <book category="WEB">
    <title lang="en-us">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>

PHP SimpleXML - Obțineți valorile nod/atribut. PHP SimpleXML - Obțineți valorile atributului. PHP SimpleXML - Obțineți valorile atributului - Buclă

PHP SimpleXML - Obțineți valorile atributului (Get Attribute Values)

Următorul exemplu obține valoarea atributului a atributului „category al primului element <book> și valoarea atributului a atributului „lang al elementului <title> din al doilea element <book>:

Exemplu
 
<?php
$xml=simplexml_load_file("books.xml") or die("Eroare: Nu se poate crea obiectul");
echo $xml->book[0]['category'] . "<br>";
echo $xml->book[1]->title['lang'];
?>

Rezultatul codului de mai sus va fi:
 
COOKING
en

PHP SimpleXML - Obțineți valorile atributului - Buclă (Get Attribute Values - Loop)

Următorul exemplu obține valorile atributelor elementelor <title> din fișierul "books.xml":

Exemplu
 
<?php
$xml=simplexml_load_file("books.xml") or die("Eroare: Nu se poate crea obiectul");
foreach($xml->children() as $books) {
    echo $books->title['lang'];
    echo "<br>";
}
?>

Rezultatul codului de mai sus va fi:
 
en
en
en-us
en-us

PHP SimpleXML - Obțineți valorile nod/atribut. PHP SimpleXML - Obțineți valorile nodului unor elemente specifice . PHP SimpleXML - Obțineți valorile nodului - Buclă.

PHP SimpleXML - Obțineți valorile nodului ale unor elemente specifice (Get Node Values of Specific Elements)

Următorul exemplu obține valoarea nodului elementului <title> din primul și al doilea element <book> din fișierul "books.xml":

Exemplu
 
<?php
$xml=simplexml_load_file("books.xml") or die("Eroare: Nu se poate crea obiectul");
echo $xml->book[0]->title . "<br>";
echo $xml->book[1]->title;
?>

Rezultatul codului de mai sus va fi:
 
Everyday Italian
Harry Potter


PHP SimpleXML - Obțineți valorile nodului - Buclă (Get Node Values - Loop)

Următorul exemplu buclează (loops) toate elementele <book> din fișierul "books.xml" și primește valorile nodurilor ale elementelor <title>, <author>, <year> și <price>:

Exemplu
 
<?php
$xml=simplexml_load_file("books.xml") or die("Eroare: Nu se poate crea obiectul");
foreach($xml->children() as $books) {
    echo $books->title . ", ";
    echo $books->author . ", ";
    echo $books->year . ", ";
    echo $books->price . "<br>";
}
?>

Rezultatul codului de mai sus va fi:
 
Everyday Italian, Giada De Laurentiis, 2005, 30.00
Harry Potter, J K. Rowling, 2005, 29.99
XQuery Kick Start, James McGovern, 2003, 49.99
Learning XML, Erik T. Ray, 2003, 39.95

Analizator PHP XML Expat. Inițializarea analizatorului XML Expat.

Inițializarea analizatorului XML Expat (XML Expat Parser)

Vrem să inițializăm XML Expat Parser în PHP, să definim unii manageri pentru diferite evenimente XML, apoi să analizăm fișierul XML.

Exemplu
 
<?php
//  Inițializați analizatorul XML (XML parser)
$parser=xml_parser_create();

// Funcție de utilizat la începutul unui element
function start($parser,$element_name,$element_attrs) {
  switch($element_name) {
    case "NOTE":
    echo "-- Note --<br>";
    break;
    case "TO":
    echo "To: ";
    break;
    case "FROM":
    echo "From: ";
    break;
    case "HEADING":
    echo "Heading: ";
    break;
    case "BODY":
    echo "Message: ";
  }
}

// Funcție de utilizat la sfârșitul unui element
function stop($parser,$element_name) {
  echo "<br>";
}

// Funcție de utilizat la găsirea datelor de tip caracter
function char($parser,$data) {
  echo $data;
}

// Specificați elementul handler
xml_set_element_handler($parser,"start","stop");

// Specificați gestionarul de date (data handler)
xml_set_character_data_handler($parser,"char");

// Deschideți fișierul XML
$fp=fopen("note.xml","r");

// Citiți datele
while ($data=fread($fp,4096)) {
  xml_parse($parser,$data,feof($fp)) or
  die (sprintf("XML Error: %s at line %d",
  xml_error_string(xml_get_error_code($parser)),
  xml_get_current_line_number($parser)));
}

// Eliberați analizatorul XML (XML parser)
xml_parser_free($parser);
?>

Analizator PHP XML Expat. Analizator bazat pe evenimente. Funcțiile analizatorului XML Expat. Fișierul XML.

Analizator PHP XML Expat (PHP XML Expat Parser)

Analizatorul (parser) XML Expat integrat permite procesarea documentelor XML în PHP.

Analizatorul (parser) XML Expat

Analizatorul (parser) Expat este un analizator (parser) bazat pe evenimente (event-based parser).

Priviți următoarea fracție XML:
 
<from>Ioana</from>

Un analizator bazat pe evenimente (event-based parser) raportează XML-ul de mai sus ca o serie de trei evenimente:
 
  • Start element: from
  • Start CDATA section, value: Ioana
  • Close element: from

Funcțiile XML Expat Parser fac parte din nucleul PHP. Nu este necesară instalarea pentru a utiliza aceste funcții.

Fișierul XML

Fișierul XML „note.xmlva fi utilizat în exemplul de mai jos:
 
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Popescu</to>
<from>Ioana</from>
<heading>Reminder</heading>
<body>Nu uitați de mine în acest weekend!</body>
</note>

Analizator PHP XML Expat. Inițializarea analizatorului XML Expat - Exemplu explicat. Funcția xml_parser_create(). Funcția xml_set_element_handler(). Funcția xml_set_character_data_handler(). Funcția xml_parse().

Inițializarea analizatorului XML Expat (XML Expat Parser)

Exemplu explicat:
 
  • Inițializați analizatorul XML (XML parser) cu funcția xml_parser_create()
  • Creați funcții pe care să le utilizați cu diferiții manageri de evenimente (event handlers)
  • Adăugați funcția xml_set_element_handler() pentru a specifica ce funcție va fi executată atunci când parserul va întâlni etichetele de deschidere și închidere (opening and closing tags)
  • Adăugați funcția xml_set_character_data_handler() pentru a specifica ce funcție se va executa atunci când parserul întâlnește date de tip caracter
  • Analizați fișierul "note.xml" cu funcția xml_parse()
  • În caz de eroare, adăugați funcția xml_error_string() pentru a converti o eroare XML într-o descriere textuală
  • Apelați funcția xml_parser_free() pentru a elibera memoria alocată cu funcția xml_parser_create()

Analizatorul PHP XML DOM. XML de încărcare și ieșire. Funcția saveXML().

XML de încărcare și ieșire (Load and Output XML)

Vrem să inițializăm analizatorul XML (XML parser), să încărcăm xml-ul și să îl scoatem:
 
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");

print $xmlDoc->saveXML();
?>

Rezultatul codului de mai sus va fi:
 
Popescu Ioana Reminder Nu uita de mine în acest weekend!

Dacă selectați „View source” în fereastra browserului, veți vedea următorul HTML:
 
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Popescu</to>
<from>Ioana</from>
<heading>Reminder</heading>
<body>Nu uitați de mine în acest weekend!</body>
</note>

Exemplul de mai sus creează un obiect DOMDocument (DOMDocument-Object) și încarcă XML din „note.xml” în el.

Apoi funcția saveXML() introduce documentul XML intern într-un șir (string), astfel încât să-l putem scoate.

Analizatorul PHP XML DOM. Buclă prin XML.

Buclă prin XML (Looping through XML)

Vrem să inițializăm analizatorul XML, să încărcăm XML și să ne buclăm (loop) prin toate elementele elementului <note>:
 
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");

$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item) {
  print $item->nodeName . " = " . $item->nodeValue . "<br>";
}
?>

Rezultatul codului de mai sus va fi:
 
#text =
to = Popescu
#text =
from = Ioana
#text =
heading = Reminder
#text =
body = Nu ma uita in acest weekend!
#text =

În exemplul de mai sus vedeți că există noduri de text goale (empty text nodes) între fiecare element.

Când XML generează, conține adesea spații albe (white-spaces) între noduri. Analizatorul XML DOM (XML DOM parser) tratează acestea ca elemente obișnuite și, dacă nu sunteți conștienți de ele, uneori provoacă probleme.

Analizatorul PHP XML DOM. Funcțiile analizatorului DOM. Fișierul XML.

Analizatorul PHP XML DOM (PHP XML DOM Parser)

Analizatorul DOM încorporat (built-in DOM parser) face posibilă procesarea documentelor XML în PHP.

Analizatorul XML DOM

Analizatorul DOM (DOM parser) este un analizator bazat pe arbori (tree-based parser).

Priviți următoarea fracție document XML (XML document fraction):
 
<?xml version="1.0" encoding="UTF-8"?>
<from>Ioana</from>

DOM vede XML-ul de mai sus ca o structură de arbore (tree structure):
 
  • Nivelul 1: Document XML
  • Nivelul 2: Elementul rădăcină: <de la>
  • Nivelul 3: Element text: "Ioana"

Instalare

Funcțiile analizatorului DOM (DOM parser functions) fac parte din nucleul PHP. Nu este necesară instalarea pentru a utiliza aceste funcții.

Fișierul XML

Fișierul XML de mai jos („note.xml”) va fi utilizat în exemplul nostru:
 
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Popescu</to>
<from>Ioana</from>
<heading>Reminder</heading>
<body>Nu uitați de mine în acest weekend!</body>
</note>

PHP - AJAX Introducere. Ce este AJAX? AJAX se bazează pe standardele de internet. Sugestie Google. Începeți să utilizați AJAX Today.

PHP - AJAX Introducere

AJAX este despre actualizarea părților unei pagini web, fără a reîncărca întreaga pagină.

Ce este AJAX?

AJAX = JavaScript asincron și XML.

AJAX este o tehnică pentru crearea de pagini web rapide și dinamice.

AJAX permite actualizarea asincronă a paginilor web, schimbând cantități mici de date cu serverul din culise. Aceasta înseamnă că este posibil să actualizați părți ale unei pagini web, fără a reîncărca întreaga pagină.

Paginile web clasice (care nu utilizează AJAX) trebuie să reîncarce întreaga pagină dacă conținutul ar trebui să se schimbe.

Exemple de aplicații care utilizează AJAX: Google Maps, Gmail, Youtube și Facebook.

AJAX se bazează pe standardele de internet

AJAX se bazează pe standardele de internet și folosește o combinație de:
 
  • Obiectul XMLHttpRequest (pentru schimbul de date asincron cu un server)
  • JavaScript/DOM (pentru afișarea/interacțiunea cu informațiile)
  • CSS (pentru stilizarea datelor)
  • XML (adesea folosit ca format pentru transferul de date)

Aplicațiile AJAX sunt independente de browser și de platformă!

Sugestie Google

AJAX a fost popularizat în 2005 de Google, cu Google Suggest.

Google Suggest utilizează AJAX pentru a crea o interfață web foarte dinamică: Când începeți să tastați în caseta de căutare Google, un JavaScript trimite cererea de informații pe un server și serverul returnează o listă de sugestii.

Începeți să utilizați AJAX Today

În tutorialul nostru PHP, vom demonstra modul în care AJAX poate actualiza părți ale unei pagini web, fără a reîncărca întreaga pagină. Scriptul serverului va fi scris în PHP.

Bază de date AJAX. Fișierul PHP.

PHP - AJAX și MySQL

Fișierul PHP


Pagina de pe server numită de JavaScript-ul precedent este un fișier PHP numit "getuser.php".

Codul sursă din „getuser.php” rulează o interogare (query) împotriva unei baze de date MySQL și returnează rezultatul într-un tabel HTML:
 
<!DOCTYPE html>
<html>
<head>
<style>
table {
    width: 100%;
    border-collapse: collapse;
}

table, td, th {
    border: 1px solid black;
    padding: 5px;
}

th {text-align: left;}
</style>
</head>
<body>

<?php
$q = intval($_GET['q']);

$con = mysqli_connect('localhost','petre','abc123','my_db');
if (!$con) {
    die('Nu s-a putut conecta: ' . mysqli_error($con));
}

mysqli_select_db($con,"ajax_demo");
$sql="SELECT * FROM user WHERE id = '".$q."'";
$result = mysqli_query($con,$sql);

echo "<table>
<tr>
<th>Prenume</th>
<th>Nume</th>
<th>Vârsta</th>
<th>Orașul natal</th>
<th>Job</th>
</tr>";
while($row = mysqli_fetch_array($result)) {
    echo "<tr>";
    echo "<td>" . $row['Prenume'] . "</td>";
    echo "<td>" . $row['Nume'] . "</td>";
    echo "<td>" . $row['Vârsta'] . "</td>";
    echo "<td>" . $row['Orașul natal'] . "</td>";
    echo "<td>" . $row['Job'] . "</td>";
    echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>
</body>
</html>

Explicație: Când interogarea este trimisă de la JavaScript în fișierul PHP, se întâmplă următoarele:
 
  • PHP deschide o conexiune la un server MySQL
  • Este găsită persoana corectă
  • Un tabel HTML este creat, umplut cu date și trimis înapoi la marcatorul de locație (placeholder) „txtHint

Bază de date AJAX. PHP - AJAX și MySQL. Exemplu de bază de date AJAX. Funcția showUser(). Evenimentul onchange. Explicarea codului. Creați un obiect XMLHttpRequest.

PHP - AJAX și MySQL

AJAX poate fi utilizat pentru comunicarea interactivă cu o bază de date.

Exemplu de bază de date AJAX

Modul în care o pagină web poate obține informații dintr-o bază de date cu AJAX:

Exemplu explicat

Când un utilizator selectează o persoană din lista derulantă, se execută o funcție numită „showUser()”.

Funcția este declanșată de evenimentul onchange.

Iată codul HTML:

Exemplu:
 
<html>
<head>
<script>
function showUser(str) {
    if (str == "") {
        document.getElementById("txtHint").innerHTML = "";
        return;
    } else {
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("txtHint").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET","getuser.php?q="+str,true);
        xmlhttp.send();
    }
}
</script>
</head>
<body>

<form>
<select name="users" onchange="showUser(this.value)">
  <option value="">Select a person:</option>
  <option value="1">Petre Georgescu</option>
  <option value="2">Luiza Georgescu</option>
  <option value="3">Ion Suciu</option>
  <option value="4">Georgiana Ionescu</option>
  </select>
</form>
<br>
<div id="txtHint"><b>Informațiile despre persoană vor fi enumerate aici ... </b></div>

</body>
</html>

Explicarea codului:

În primul rând, verificați dacă persoana este selectată. Dacă nu este selectată nicio persoană (str == ""), ștergeți conținutul txtHint și ieșiți din funcție. Dacă este selectată o persoană, faceți următoarele:

Creați un obiect XMLHttpRequest
 
  • Creați funcția care trebuie executată atunci când răspunsul serverului este gata
  • Trimiteți cererea dezactivată unui fișier de pe server
  • Observați că la URL se adaugă un parametru (q) (avand conținutul listei derulante)

AJAX - XML. PHP - AJAX și XML. Exemplu AJAX XML. Exemplu explicat - Pagina HTML. Funcția "showCD()". Evenimentul "onchange". Funcția showCD().

PHP - AJAX și XML

AJAX poate fi utilizat pentru comunicarea interactivă cu un fișier XML.

Exemplu AJAX XML

Următorul exemplu va demonstra cum o pagină web poate extrage informații dintr-un fișier XML cu AJAX:

Exemplu explicat - Pagina HTML

Când un utilizator selectează un CD dint-o listă verticală, se execută o funcție numită "showCD()".

Funcția este declanșată de evenimentul "onchange":
 
<html>
<head>
<script>
function showCD(str) {
  if (str=="") {
    document.getElementById("txtHint").innerHTML="";
    return;
  }
  if (window.XMLHttpRequest) {
    // cod pentru IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else {  // cod pentru IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (this.readyState==4 && this.status==200) {
      document.getElementById("txtHint").innerHTML=this.responseText;
    }
  }
  xmlhttp.open("GET","getcd.php?q="+str,true);
  xmlhttp.send();
}
</script>
</head>
<body>

<form>
Selectați un CD:
<select name="cds" onchange="showCD(this.value)">
<option value="">Selectați un CD:</option>
<option value="Bon Jovi">Bob Dylan</option>
<option value="Beatles">Bee Gees</option>
<option value="Scorpions">Cat Stevens</option>
</select>
</form>
<div id="txtHint"><b>Informațiile despre CD vor fi enumerate aici ... </b></div>

</body>
</html>

Funcția showCD() face următoarele:
 
  • Verificați dacă este selectat un CD
  • Creați un obiect XMLHttpRequest
  • Creați funcția care trebuie executată atunci când răspunsul serverului este gata
  • Trimiteți cererea dezactivată unui fișier de pe server
  • Observați că la URL se adaugă un parametru (q) (cu conținutul listei derulante)

AJAX - XML. Fișierul PHP. PHP creează un obiect XML DOM.

PHP - AJAX și XML

Fișierul PHP

Pagina de pe server numită de JavaScript-ul precedent este un fișier PHP numit "getcd.php".

Scriptul PHP încarcă un document XML, "cd_catalog.xml", rulează o interogare (query) împotriva fișierului XML și returnează rezultatul ca HTML:
 
<?php
$q=$_GET["q"];

$xmlDoc = new DOMDocument();
$xmlDoc->load("cd_catalog.xml");

$x=$xmlDoc->getElementsByTagName('ARTIST');

for ($i=0; $i<=$x->length-1; $i++) {
  //Procesați numai nodurile element
  if ($x->item($i)->nodeType==1) {
    if ($x->item($i)->childNodes->item(0)->nodeValue == $q) {
      $y=($x->item($i)->parentNode);
    }
  }
}

$cd=($y->childNodes);

for ($i=0;$i<$cd->length;$i++) {
  //Procesați numai nodurile element
  if ($cd->item($i)->nodeType==1) {
    echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
    echo($cd->item($i)->childNodes->item(0)->nodeValue);
    echo("<br>");
  }
}
?>

Când interogarea CD este trimisă de la JavaScript la pagina PHP, se întâmplă următoarele:

PHP creează un obiect XML DOM
 
  • Găsiți toate elementele <artist> care se potrivesc cu numele trimis de la JavaScript
  • Afișați informațiile despre album (trimiteți la marcatorul txtHint”)

PHP - AJAX Căutare live. Exemplu explicat - Pagina HTML. Funcția „showResult()”. Evenimentul "onkeyup". Explicația codului sursă. Creați un obiect XMLHttpRequest.

PHP - AJAX Căutare live

AJAX poate fi utilizat pentru a crea căutări mai prietenoase și interactive pentru utilizator.

AJAX Căutare live

Următorul exemplu va demonstra o căutare live, unde obțineți rezultate de căutare în timp ce tastați.

Căutarea live are multe avantaje în comparație cu căutarea tradițională:
 
  • Rezultatele sunt afișate pe măsură ce tastați
  • Rezultatele se restrâng pe măsură ce continuați să scrieți
  • Dacă rezultatele devin prea restrânse, eliminați caracterele pentru a vedea un rezultat mai larg

Rezultatele se găsesc într-un fișier XML (de ex. links.xml). Pentru a face acest exemplu mic și simplu, sunt disponibile doar șase rezultate.

Exemplu explicat - Pagina HTML

Când un utilizator tastează un caracter în câmpul de intrare (input field), funcția „showResult() este executată. Funcția este declanșată de evenimentul "onkeyup":
 
<html>
<head>
<script>
function showResult(str) {
  if (str.length==0) {
    document.getElementById("livesearch").innerHTML="";
    document.getElementById("livesearch").style.border="0px";
    return;
  }
  if (window.XMLHttpRequest) {
    // cod pentru IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else {  // cod pentru IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (this.readyState==4 && this.status==200) {
      document.getElementById("livesearch").innerHTML=this.responseText;
      document.getElementById("livesearch").style.border="1px solid #A5ACB2";
    }
  }
  xmlhttp.open("GET","livesearch.php?q="+str,true);
  xmlhttp.send();
}
</script>
</head>
<body>

<form>
<input type="text" size="30" onkeyup="showResult(this.value)">
<div id="livesearch"></div>
</form>

</body>
</html>

Explicația codului sursă:

Dacă câmpul de intrare (input field) este gol (str.length == 0), funcția șterge conținutul marcatorului de căutare live (livesearch placeholder) și iese din funcție.

Dacă câmpul de intrare (input field) nu este gol, funcția showResult() execută următoarele:

Creați un obiect XMLHttpRequest
 
  • Creați funcția care trebuie executată atunci când răspunsul serverului este gata
  • Trimiteți cererea dezactivată unui fișier de pe server
  • Observați că la URL se adaugă un parametru (q) (cu conținutul câmpului de introducere (input field))

PHP - AJAX Căutare live. Fișierul PHP. Încărcați un fișier XML într-un nou obiect XML DOM.

PHP - AJAX Căutare live

Fișierul PHP

Pagina de pe server numită de JavaScript-ul precedent este un fișier PHP numit "livesearch.php".

Codul sursă din „livesearch.php” caută un fișier XML pentru titluri care se potrivesc cu șirul de căutare (search string) și returnează rezultatul:
 
<?php
$xmlDoc=new DOMDocument();
$xmlDoc->load("links.xml");

$x=$xmlDoc->getElementsByTagName('link');

//obțineți parametrul q de la URL
$q=$_GET["q"];

//căutarea tuturor linkurilor din fișierul xml dacă lungimea lui q>0
if (strlen($q)>0) {
  $hint="";
  for($i=0; $i<($x->length); $i++) {
    $y=$x->item($i)->getElementsByTagName('title');
    $z=$x->item($i)->getElementsByTagName('url');
    if ($y->item(0)->nodeType==1) {
      //find a link matching the search text
      if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q)) {
        if ($hint=="") {
          $hint="<a href='" .
          $z->item(0)->childNodes->item(0)->nodeValue .
          "' target='_blank'>" .
          $y->item(0)->childNodes->item(0)->nodeValue . "</a>";
        } else {
          $hint=$hint . "<br /><a href='" .
          $z->item(0)->childNodes->item(0)->nodeValue .
          "' target='_blank'>" .
          $y->item(0)->childNodes->item(0)->nodeValue . "</a>";
        }
      }
    }
  }
}

// Setați ieșirea la „nici o sugestie” dacă nu a fost găsit niciun indiciu
// sau la valorile corecte
if ($hint=="") {
  $response="nici o sugestie";
} else {
  $response=$hint;
}

//ieșire răspuns
echo $response;
?>

Dacă există un text trimis de la JavaScript (strlen($q)> 0), se întâmplă următoarele:

Încărcați un fișier XML într-un nou obiect XML DOM
 
  • Buclați-vă (Loop) prin toate elementele <title> pentru a găsi potriviri (matches) din textul trimis de JavaScript
  • Setează URL-ul și titlul corect în variabila „$response. Dacă se găsesc mai multe potriviri (matches), toate potrivirile (matches) sunt adăugate la variabilă
  • Dacă nu se găsește nicio potrivire (matche), variabila „$response” este setată pe „fără sugestie

PHP - Sondaj AJAX. Exemplu explicat - Pagina HTML. Funcția "getVote()". Evenimentul "onclick". Creați un obiect XMLHttpRequest.

PHP - Sondaj AJAX

Sondaj AJAX

Următorul exemplu va demonstra un sondaj în care rezultatul este afișat fără reîncărcare.

Exemplu explicat - Pagina HTML

Când un utilizator alege o opțiune, se execută o funcție numită "getVote()".

Funcția este declanșată de evenimentul "onclick":
 
<html>
<head>
<script>
function getVote(int) {
  if (window.XMLHttpRequest) {
    // cod pentru IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else {  // cod pentru IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (this.readyState==4 && this.status==200) {
      document.getElementById("poll").innerHTML=this.responseText;
    }
  }
  xmlhttp.open("GET","poll_vote.php?vote="+int,true);
  xmlhttp.send();
}
</script>
</head>
<body>

<div id="poll">
<h3>Până acum vă plac PHP și AJAX?</h3>
<form>
Da:
<input type="radio" name="vote" value="0" onclick="getVote(this.value)">
<br>Nu:
<input type="radio" name="vote" value="1" onclick="getVote(this.value)">
</form>
</div>

</body>
</html>

Funcția getVote() face următoarele:

Creați un obiect XMLHttpRequest
 
  • Creați funcția care trebuie executată atunci când răspunsul serverului este gata
  • Trimiteți cererea dezactivată unui fișier de pe server
  • Observați că la URL se adaugă un parametru (vote) (cu valoarea opțiunii da sau nu)

PHP - Sondaj AJAX. Fișierul PHP. Obțineți conținutul fișierului "poll_result.txt". Fișierul text.

PHP - Sondaj AJAX

Fișierul PHP

Pagina de pe server numită de JavaScript-ul precedent este un fișier PHP numit "poll_vote.php":
 
<?php
$vote = $_REQUEST['vote'];

//obțineți conținutul fișierului text (textfile)
$filename = "poll_result.txt";
$content = file($filename);

//puneți conținutul în tablou (array)
$array = explode("||", $content[0]);
$yes = $array[0];
$no = $array[1];

if ($vote == 0) {
  $yes = $yes + 1;
}
if ($vote == 1) {
  $no = $no + 1;
}

// introduceți voturi în fișierul txt (txt file)
$insertvote = $yes."||".$no;
$fp = fopen($filename,"w");
fputs($fp,$insertvote);
fclose($fp);
?>

<h2>Rezultat:</h2>
<table>
<tr>
<td>Da:</td>
<td>
<img src="poll.gif"
width='<?php echo(100*round($yes/($no+$yes),2)); ?>'
height='20'>
<?php echo(100*round($yes/($no+$yes),2)); ?>%
</td>
</tr>
<tr>
<td>Nu:</td>
<td>
<img src="poll.gif"
width='<?php echo(100*round($no/($no+$yes),2)); ?>'
height='20'>
<?php echo(100*round($no/($no+$yes),2)); ?>%
</td>
</tr>
</table>

Valoarea este trimisă de la JavaScript și se întâmplă următoarele:

Obțineți conținutul fișierului "poll_result.txt"
 
  • Puneți conținutul fișierului în variabile și adăugați unul la variabila selectată
  • Scrieți rezultatul în fișierul "poll_result.txt"
  • Prezentați o reprezentare grafică a rezultatului sondajului

Fișierul text

Fișierul text (poll_result.txt) este locul în care stocăm datele din sondaj.

Este stocat astfel:

0 || 0

Primul număr reprezintă voturile Da, al doilea număr reprezintă voturile „Nu.

Notă: Nu uitați să permiteți serverului dvs. Web să editeze fișierul text. NU acorda acces tuturor, doar serverului web (PHP).

PHP - AJAX și PHP. Exemplu AJAX PHP. Funcția showHint(). Evenimentul onkeyup. Explicarea codului.

PHP - AJAX și PHP

AJAX este utilizat pentru a crea mai multe aplicații interactive.

Exemplu AJAX PHP

Următorul exemplu va demonstra modul în care o pagină web poate comunica cu un server web în timp ce un utilizator tastează într-un câmp de intrare (input field):

Exemplu explicat

Când un utilizator introduce un caracter în câmpul de intrare (input field), se execută o funcție numită "showHint()".

Funcția este declanșată de evenimentul onkeyup.

Iată codul HTML:

Exemplu:
 
<html>
<head>
<script>
function showHint(str) {
    if (str.length == 0) {
        document.getElementById("txtHint").innerHTML = "";
        return;
    } else {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("txtHint").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET", "gethint.php?q=" + str, true);
        xmlhttp.send();
    }
}
</script>
</head>
<body>

<p><b>Începeți să tastați un prenume în câmpul de introducere (input field) de mai jos:</b></p>
<form>
Prenume: <input type="text" onkeyup="showHint(this.value)">
</form>
<p>Sugestii: <span id="txtHint"></span></p>
</body>
</html>

Explicarea codului:

În primul rând, verificați dacă câmpul de intrare (input field) este gol (str.length == 0). Dacă este, ștergeți conținutul marcajului de substituție txtHint și ieșiți din funcție.

Cu toate acestea, dacă câmpul de intrare nu este gol, faceți următoarele:
 
  • Creați un obiect XMLHttpRequest
  • Creați funcția care trebuie executată atunci când răspunsul serverului este gata
  • Trimiteți cererea la un fișier PHP (gethint.php) de pe server
  • Observați că parametrul q este adăugat la url (gethint.php?q="+str)
  • Și variabila str conține conținutul câmpului de intrare (input field)

PHP - AJAX și PHP. Fișierul PHP - "gethint.php".

PHP - AJAX și PHP

Fișierul PHP - "gethint.php"

Fișierul PHP verifică o serie de nume și returnează numele corespunzător browserului:
 
<?php
// Array with names
$a[] = "Ana";
$a[] = "Briana";
$a[] = "Cristina";
$a[] = "Diana";
$a[] = "Eva";
$a[] = "Florina";
$a[] = "Gina";
$a[] = "Helena";
$a[] = "Ina";
$a[] = "Jana";
$a[] = "Karina";
$a[] = "Liliana";
$a[] = "Nina";
$a[] = "Ofelia";
$a[] = "Petronela";
$a[] = "Alexandra";
$a[] = "Rahela";
$a[] = "Corina";
$a[] = "Dorina";
$a[] = "Evelina";
$a[] = "Emilia";
$a[] = "Sorina";
$a[] = "Tina";
$a[] = "Luana";
$a[] = "Violeta";
$a[] = "Lizuca";
$a[] = "Elizsabeta";
$a[] = "Eliana";
$a[] = "Wanda";
$a[] = "Victoria;

// obțineți parametrul q de la URL
$q = $_REQUEST["q"];

$hint = "";

// căutarea tuturor indiciilor din tablou (array) dacă $q este diferit de ""
if ($q !== "") {
    $q = strtolower($q);
    $len=strlen($q);
    foreach($a as $name) {
        if (stristr($q, substr($name, 0, $len))) {
            if ($hint === "") {
                $hint = $name;
            } else {
                $hint .= ", $name";
            }
        }
    }
}

// Ieșirea „fără sugestii” dacă nu a fost găsit niciun indiciu sau ieșirea valorilor corecte
echo $hint === "" ? "nici o sugestie" : $hint;
?>