Site-uri și aplicații pentru web

Curs 8


phpMyAdmin

Conform site-ului ofocial https://www.phpmyadmin.net/, PHPMyAdmin este un instrument software gratuit scris în limbajul PHP, destinat gestionării serverului de baze de date MySQL. Având în vedere funcțiile pe care le îndeplinește și complexitatea demonstrată, PHPMyAdmin este un bun exemplu de utilizare a limbajului PHP.

Interfața grafică expusă de PHPMyAdmin permite realizarea următoarelor acțiuni:

  • crearea și suprimarea bazelor de date;
  • gestionarea utilizatorilor bazelor de date și impunerea drepturilor lor de acces;
  • crearea, modificarea și suprimarea tabelelor bazelor de date;
  • inserarea, editarea și ștergerea înregistrărilor din tabelele bazelor de date;
  • exportarea datelor din bazele de date folosind diferite formate. De regulă conținuturile se exportă sub forma fișierelor în format CSV (Comma Separated Values), exploatabile în continuare în Excel, precum și în format SQL;
  • tastarea și executarea comenzilor SQL necesare creării tabelelor și manipulării datelor,
  • importarea datelor din fișiere CSV sau SQL.

Pentru a putea utiliza PHPMyAdmin, trebuie lansate în execuție serverele Apache și MySQL:


Accesul la aplicație se realizează tastând în browser adresa http://localhost/phpmyadmin/

MySQL

MySQL este un sistem de gestiune a bazelor de date relaţionale produs de compania suedeză MySQL AB (preluată în 2008 de Sun Microsystems, cumpărată la rândul ei în 2009 de Oracle Co.). Inițial a fost distribuit gratuit (sub Licenţa Publică Generală, GNU) dar din 2010 utilizarea comercială a aplicației necesită cumpărarea unei licențe (aprox. 900$/server).

MySQL este cel mai popular SGBD open-source şi o componentă principală a pachetului de aplicaţii XAMPP.

Deşi este folosit foarte des împreună cu limbajul PHP, serverul de baze de date MySQL poate fi accesat din orice limbaj major: C, C++, C#, Java, Perl, sau Python.

Administrarea serverului MySQL se poate face din PHPMyadmin, dar și în modul linie de comandă.

MySQL poate fi rulat pe toate platformele software majore (Windows, Linux, Mac OS, etc.).

În cele ce urmează MySQL va fi componenta aplicaţiilor web destinată păstrării datelor aplicaţiei. Deşi limbajul PHP are funcţii destinate scrierii de fişiere pe discul serverului care găzduiește componentele de tip server ale aplicațiilor care vor fi realizate, de regulă se apelează la varianta mult mai sigură a folosirii serverului de baze de date MySQL.

Observație: Oracle Co. oferă dezvoltatorilor și varianta alternativă, MariaDB. Practic este același server de baze de date, sub o altă denumire.

Accesarea SGBD MySQL (MariaDB) după instalarea pachetului de aplicații XAMPP se realizează folosind ca nume root (administratorul serverului), fără parolă (paola va fi un șir de caractere vid "").

Desigur, pot fi creați utilizatori suplimentari. Acestora vor trebui să li se definească parole de acces și drepturile pe care le vor avea asupra bazelor de date de pe server.

Observație: Un server de baze de date poate găzdui mai multe baze de date. Fiecare bază de date va putea fi exploatată de unul sau mai mulți utilizatori. Fiecărui utilizator i se va deschide un cont separat. Odată cu deschiderea unui cont se poate opta și pentru crearea unei baze de date pe care noul utilizator o va putea exploata, deci crearea utilizatorului va precede crearea noii baze de date.

Pentru a crea un nou utilizator al serverului MySQL se va selecta tabul Utilizatori (eng. User accounts):

Înainte de a se crea efectiv utilizatorul, în aceeași fereastră se impun drepturile acestuia. De regulă se acceptă toate drepturile din primele două categorii, Date și Structură (eng. Data și Structure).

MySQL

MySQL este un sistem de gestiune a bazelor de date relaționale. Este cel mai popular SGBD open-source la ora actuală. Este folosit foarte des împreună cu limbajul de programare PHP. Cu MySQL se pot construi aplicații în orice limbaj major (de ex. C, C++, C#, Java, Perl, PHP, Python, etc.).






TOP

Crearea bazei de date a unei aplicații

Aplicațiile software sunt create pentru a culege, prelucra și păstra informații. Aceasta implică faptul că natura informațiilor care vor fi prelucrate este cunoscută de la început. În primele stadii de dezvoltare a aplicației pot fi deci definite principalele entități (sau obiecte, în sens informatic) putându-se trasa și o diagramă care indică relațiile dintre acestea (o diagramă ER, prescurtare de la Entity - Relationship).

Diagrama afișată definește denumirile și structura principalelor clase (sau tabele, dacă ne referim la modul de stocare a entităților în baza de date) și relațiile dintre ele. Relațiile sunt cele cunoscute din teroria bazelor de date relaționale:

Diagrama conține și denumirile câmpurilor tabelelor bazei de date și denumirea cheii primare, respectiv denumirea unui câmp care are valori distincte pentru toate articolele unui tabel.

Informațiile din această diagramă vor permite crearea bazei de date a aplicației. La crearea tabelelor bazei de date vor mai trebui definite pentru fiecare câmp tipul de dată utilizat (număr, șir de caractere, dată calendaristică etc.). De asemenea, structura inițială va fi completată cu un set de tabele de legătură destinat normalizării bazei de date.

Baza de date a aplicației Familia mea

Deoarece template-ul selectat va servi la realizarea unei aplicații, în continuare se va crea baza de date a acesteia.

Concret se va proceda astfel:

  1. Se va lansa în execuție aplicația PHPMyAdmin;
  2. Pentru crearea bazei de date necesare se va selecta în PHPMyAdmin primul tab, Databases, se va introduce numele noii baze de date (familia) și setul de caractere care va fi folosit în tabelele acesteia (utf8_general_ci):

  1. Vor fi create apoi tabelele necesare. Pentru a le defini, vor fi analizate secțiunile din paginile site-ului care vor avea un conținut dinamic, preluat din baza de date.


Pagina evenimente.html

Dacă se selectează opțiunea Evenimente de pe bara de navigare, în fereastra browser-ului va fi afișat următorul conținut:

Fiecare articol din tabelul care va fi creat (evenimente) va trebui să permită crearea unui bloc similar celui evidențiat în imagine. Un astfel de bloc se crează pornind de la următoarele informații:

  • o imagine (600x400px) - câmpul imagine;
  • un titlu (Lara's 1th Birthday) - câmpul titlu;
  • o dată calendaristică (Sunday, September 26th at 7:00 pm) - câmpul data;
  • o prezentare (Lorem ipsum dolor sit amet, ...) - câmpul prezentare;
  • un câmp suplimentar, id, care va avea valori întregi și va fi cheie primară în tabelul EVENIMENTE.

Crearea tabelului evenimente presupune doi pași, declararea numelui tabelului și a numărului de câmpuri respectiv definirea denumirilor și a caracteristicilor câmpurilor tabelului, ca în imaginile următoare:






Pagina galerie.html

Dacă se selectează pe bara de navigare opțiunea Galerie, în fereastra browser-ului va fi afișată o galerie de imagini.

Pentru a înțelege modul în care operează scripturile care permit filtrarea setului de imagini în funcție de categorie, se va analiza codul paginii galerie.html. Mai precis informațiile asociate intrărilor din lista de categorii și cele utilizate pentru a afișa o imagine oarecare. Informațiile relevante rezultă din imaginea următoare:

Se observă că fiecare element din lista neordonată are un atribut denumit data-filter având ca și valoare denumirea unei clase (.filter-home, .filter-beach sau .filter-vacation). Aceste denumiri de clase se regăsesc în listele claselor folosite la stilizarea blocurilor care conțin imagini.

Din perspectiva definirii bazei de date, se observă că pentru a gestiona categoriile (ALL, HOME, BEACH, VACATION) va trebui creat un tabel, categorii, fiecare articol din acest tabel avînd având trei câmpuri: id (întreg, autoincrement, cheie primară), categorie (VARCHAR, max. 20 caractere), și clasa (VARCHAR, max. 20 caractere), ca în imagine:

În ceea ce privește imaginile, când cursorul mausului se suprapune peste o imagine, pe imagine se afișează un titlu (Beach 1) și sub titlu, un șir de caractere (un comentariu: BEACH):

Pentru memorarea imaginilor, se va crea un tabel denumit fotografii având următoarele câmpuri:

  1. id - întreg, autoincrement, cheie primară;
  2. clasa - VARCHAR, max. 20 caractere, pentru filtrare (valori din câmpul omolog din categorii);
  3. fotografie - VARCHAR, max. 12 caractere, pentru numele fișierului;
  4. titlu - VARCHAR, max. 20 caractere;
  5. comentariu - VARCHAR, max. 30 caractere;

Observație: În cursurile viitoare vor fi prezentate noțiuni de programare în limbajul PHP. Folosind acest limbaj, secțiunile care primesc date din baza de date vor fi rescrise, dar pentru a putea testa codul, în tabelele bazei de date trebuie să fie inserate datele necesare. Într-o primă fază vor fi inserate chiar cele utilizate în template-ul ales. Apoi acestea vor fi șterse, urmând să fie încărcate informații reale folosind o aplicație specializată, scrisă tot în PHP, care va trebui să fie creată.









Pentru inserarea datelor necesare testării se va folosi tot PHPMyAdmin, respectiv va fi selectat tabul Insert de pe bara de navigare a acesteia.

Cu excepția imaginilor, inserarea informațiilor nu pune probleme. În cazul imaginilor, practica obișnuită presupune redenumirea acestora. Concret, imaginile necesare afișării cardurilor din pagina evenimente.html vor fi memorate în directorul derivat imagini, denumirile acestora fiind formate din caracterul 'e' urmat de valoarea cheii primare a articolului în care imaginea este referită și de extensia specifică tipului de fișier. Exemplu: e2.jpg. La fel, denumirile imaginilor afișate în galerie.html vor începe cu litera 'g' urmată de valoarea cheii primare din articolul în care sunt referite și de extensie, după modelul: g7.jpg.


TOP

Limbajul de programare PHP

În cadrul ansamblului de "instrumente software" folosit pentru crearea unei aplicaţii Web, PHP este limbajul de programare destinat scrierii componentelor care se rulează pe server. Există desigur şi alte limbaje care pot fi folosite, dar PHP este în acest moment soluţia cea mai răspândită pentru scrierea scripturilor care prelucrează datele din formulare, care returnează date memorate în baze de date sau care generează pagini dinamice bazate pe date păstrate în baze de date.

Limbajul PHP şi interpretorul de comenzi aferent sunt gratuite. Interpretorul de comenzi este conţinut în pachetul de aplicaţii XAMPP şi este instalat automat împreună cu celelalte componente ale pachetului.

PHP este un acronim pentru "PHP: Hypertext Preprocessor". Acest limbaj este destinat scrierii componentei de back-end a unei aplicații web, deci codul scris va fi executat pe serverul care găzduiește aplicația.

Un fişier PHP poate conţine numai cod PHP sau un mix constând din elemente HTML și secvențe de cod PHP.

Lansarea în execuţie a interpretorului PHP se realizează de către serverul de Web (Apache, IIS etc.) dacă fişierul cerut de browser are extensia .php.

  http://localhost/FamiliaMea/galerie.php

Interpretorul de cod PHP va trimite browser-ului atât codul HTML existent în fişier cât şi rezultatele executării secvenţelor programate în PHP.

Codul PHP este încadrat între marcajele "<?php" și "?>". Un fișier HTML obișnuit, chiar dacă nu include secvențe de cod PHP, poate fi salvat cu extensia .php.

Exemplu de fișier PHP tipic:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
</head>
<body>
<?php 
   $nume = "Ionescu Paul";
   $an = 1998;
?>
<h2>Autorul lucrării:</h2>
<p>Numele: <?php echo $nume ?>, născut în <?php echo $an ?></p>
</body>
</html>

În PHP identificatorul unei variabile începe cu caracterul '$'.

În exemplul dat, pentru afișarea valorii variabilelor $nume și $an se folosește instrucțiunea echo, astfel: <?php echo variabila ?>. În cele ce urmează va fi însă utilizată cu precădere o scriere simplificată: <?= variabila ?>. Deci linia care afișează datele persoanei se poate scrie astfel:

  <p>Numele: <?= $nume ?>, născut în <?= $an ?></p>




În cazul care un fișier PHP conține numai cod PHP, marcajele specifice (<?php și ?>) trebuie scrise. Exemplu:

<?php 
   $nume = "Ionescu Paul";
   $an = 1998;
   echo $nume . " din <br> " . $an;  //  În PHP . (punctul) este operatorul de concatenare a sirurilor de caractere.
?>

Observație: Codul HTML poate conține cod PHP, dar ceea ce se returnează browser-ului, rezultatul procesării fișierului PHP în cadrul interpretorului de cod, trebuie să fie un cod HTML corect pe care browser-ul să-l poată utiliza.

Limbajul PHP

Limbajul PHP este limbajul de programare destinat scrierii componentelor care se rulează pe server. Este potrivit pentru dezvoltarea aplicațiilor web și poate fi încorporat în HTML.


TOP

Elementele de bază


Elementele de bază ale limbajului

În PHP numele unei variabile începe cu caracterul "$". Variabilele nu trebuie declarate în prealabil, alocarea memoriei necesare și stabilirea tipului de dată realizându-se dinamic, în momentul atribuirii unei valori.

Unele variabile sunt create automat de interpretorul PHP. De exemplu variabilele $_POST sau $_GET, care conțin setul de date transmis scriptului PHP referit în atributul action al unui element HTML <form>.

În PHP, tipurile de date sunt:

  • integer,
  • double (nr. reale, dublă precizie),
  • string,
  • boolean (tipul logic, true sau false),
  • array (şir de valori),
  • object (obiect) sau
  • NULL (sau null)

Exemple:

$a = "acesta este un sir de caractere";  //  string
$b = 3;       //  $b este integer
$c = 4.12;    //  $c este double
$d = "2";     //  $d este un şir de caractere
$e = $b + $d; //  $e = 5, deci $d a fost tratat ca întreg!
$f = true;    //  $f este boolean.
$g = false;
$luni = array("ian", "feb", "mar", "apr");  //  Un şir de valori


Şiruri de caractere

Şirurile de caractere sunt delimitate prin caractere " (ghilimele) sau ' (apostrof). Dacă în şir există ghilimele, caractere $ sau caractere \ (backslash), pentru a fi interpretate ca atare acestea vor fi precedate de \.

Exemplu:

$a = 15;
$comandaSQL = "SELECT * FROM categorii WHERE id_categorie = $ctg";

Variabilele prezente în şiruri delimitate prin ghilimele vor fi înlocuite prin valoarea lor, deci, dacă $ctg = 7, practic s-a scris:

$comandaSQL = "SELECT * FROM categorii WHERE id_categorie = 7".

Dacă un şir este delimitat prin caractere ' (apostrof), variabilele incluse în şir nu vor mai fi înlocuite prin valorile lor.

În PHP "." (punct) este operatorul de concatenare.

Exemplu:

<?php
$a=1;
$b=12;

$c = '<li><a href="caut.php?id_art = ' . $a . '&id_materie=' . $b;
$c .= '"></a></li>';  //  .= este operator de atribuire combinată
. . .
?>


Tipul array

Un şir de valori (array) poate fi declarat folosind funcţia array():

  $sirVid = array();  //  Sau varianta echivalenta: $sirVid = [];
  $luni = array("ianuarie", "februarie", "martie", "aprilie");

Se poate scrie însă și mai simplu:

  $luni = ["ianuarie", "februarie", "martie", "aprilie"];
  $luni[4] = "mai";
  $luni[5] = "iunie";
  $luni[] = "iulie";  //  Adaugare la sfarsit

Atribuirea $luni[] = "iulie"; este corectă, elementul care va primi valoare fiind luni[6].


Şiruri asociative

Elementele unui șir asociativ sunt de forma cheie => valoare

Pentru cheie se poate folosi un număr întreg sau un șir de caractere.

Exemplu:

$persoana = array('varsta' => 23, 'profesia' => 'medic', 'gen' => 'm');

Șirul asociativ $persoana poate fi creat și altfel, scriind:

$persoana['varsta'] = 23;
$persoana['profesia'] = 'medic';
$persoana['gen'] = 'm';

Se poate scrie însă și mai simplu:

$persoana = [
   'varsta' => 23, 
   'profesia' => 'medic', 
   'gen' => 'm'
];

Observație:

1. În PHP elementele șirurilor de valori sunt de fapt întotdeauna de forma (cheie => valoare). De exemplu șirul [234, 12, -7] este de fapt șirul asociativ (0 => 234, 1 => 12, 2 => -7).

2. Exemple importante de șiruri asociative sunt $_GET și $_POST. Acestea primesc automat, datorită unui mecanism integrat în PHP, valorile preluate din câmpurile elementelor HTML de tip <form> și transmise scriptului PHP care le va prelucra. Așa cum se știe, transmiterea se poate realiza folosind method="GET" sau method="POST", de unde și denumirile șirurilor asociative menționate. Exemplu:

  $eml = $_POST['e_mail'];

3. Elementele aparţinând şirurilor asociative nu sunt înlocuite corect de către interpretorul PHP dacă apar într-un şir delimitat prin ghilimele. Exemplu:

 $comandaSQL = "SELECT * FROM categorii WHERE id_categorie = $_POST['id_cat']";   //  Incorect!

Soluţia corectă:

  $idc = $_POST['id_cat'];
  $comandaSQL = "SELECT * FROM categorii WHERE id_categorie = $idc";
script PHP

Un script PHP se află și rulează pe server. Are extensia .php. În cazul în care se utilizează calculatorul personal pe care se instalează pachetul XAMPP, scriptul va fi salvat în directorul htdocs sau într-un director derivat din acesta. Execuția scriptului se realizează tastând în bara de adrese a browser-ului adresa acestuia (de ex.: http://localhost/testePHP/numescript.php).


TOP